Carga de archivo

Permite subir o adjuntar archivos desde el dispositivo.


Uso

Cuándo usar

  • Cuando se necesita que la persona usuaria suba uno o varios archivos desde su dispositivo.
  • En formularios o procesos donde los archivos son parte esencial de la acción (por ejemplo, enviar documentación, adjuntar imágenes, etc.).

Cuándo no usar

  • No usarlo para acciones que no impliquen la carga de archivos.
  • Evitar colocarlo junto a campos que no estén relacionados, para no generar confusión en la interacción.

Ejemplo de uso

Se usa en formularios que requieren adjuntar documentos, como imágenes o comprobantes. En desktop, suele incluir un botón que abre el explorador de archivos del sistema. En mobile, puede abrir el explorador o la cámara, según el tipo de archivo solicitado.

Ejemplo visual de campo de carga de archivo

Indicador de requerido y opcional

Indica si un campo es obligatorio u opcional, ayudando a las personas a completar el formulario con claridad. Podés consultar la ficha de patrones de formulario para conocer los lineamientos de uso del indicador.

Ejemplo visual de indicador de requerido y opcional de carga de archivo

Contenido

Instrucciones claras para la carga de archivos

Mostrá de forma anticipada qué tipos de archivos se aceptan, el tamaño máximo y cuántos se pueden cargar. Esto ayuda a evitar errores antes de que ocurran.

Textos legibles

Usá etiquetas e indicaciones simples, con buen contraste y jerarquía visual, para que sean fáciles de leer en cualquier dispositivo.

Errores descriptivos

Cuando algo falla, el mensaje debe explicar qué pasó y porqué. Evitá frases genéricas y detallá el problema concreto, como el tamaño del archivo.

Carga de archivo

Default

Requerido

Este es un texto de ayuda que da mas información sobre el Input. Es opcional, pero recomendado, y de no más de 3 líneas.

    <div class="form-label-container">
      <label for="exampleInputFile" class="form-label">Label</label>
      <span class="badge-forms badge-required-forms">Requerido</span>
    </div>
    <input 
      type="file" 
      class="form-control" 
      id="exampleInputFile"
      name="uploadedFile"
      aria-describedby="carga de archivo"
      accept="image/png, image/jpeg" 
    />
    <p class="form-label-description">
      Este es un texto de ayuda que da mas información sobre el Input. Es opcional, pero recomendado, y de no más de 3 líneas.
    </p>

Deshabilitado

Requerido

Este es un texto de ayuda que da mas información sobre el Input. Es opcional, pero recomendado, y de no más de 3 líneas.

    <div class="form-label-container">
      <label for="exampleInputFile" class="form-label">Label</label>
      <span class="badge-forms badge-required-forms">Requerido</span>
    </div>
    <input 
      type="file" 
      class="form-control" 
      id="exampleInputFile"
      name="uploadedFile" 
      accept="image/png, image/jpeg"
      aria-describedby="carga de archivo"
      disabled 
    />
    <p class="form-label-description">
      Este es un texto de ayuda que da mas información sobre el Input. Es opcional, pero recomendado, y de no más de 3 líneas.
    </p>

Anatomía

Anatomia del input de carga de archivo
ElementoCarácter
1. Etiqueta (Label)Obligatorio, texto que informa el tipo de información que la persona usuaria puede seleccionar.
2. Campo de archivoObligatorio, indica el nombre del archivo y estado.
3. AccionableObligatorio, despliega la acción para seleccionar un archivo para cargar.
4. Texto descriptivoObligatorio, se utiliza para proporcionar ayuda o contexto adicional a la persona usuaria.

Estados

Predeterminado (default)

Estado predeterminado de la carga de archivo en una interfaz.

Estado predeterminado del input de carga de archivo

Completado

Estado que adopta el componente cuando el archivo fue cargado exitosamente, mostrando una confirmación visual (como el cambio de color o texto) para indicar a la persona usuaria que la acción se realizó correctamente.

Estado completado del input de carga de archivo

En foco (focus)

Es un principio de accesibilidad que asegura que cualquier elemento interactivo en una interfaz sea claramente visible cuando recibe la atención del usuario, especialmente al ser navegado con el teclado. En Obelisco se utiliza un borde o anillo (focus ring) por fuera del componente en un color distintivo.

Estado en foco del input de carga de archivo

Error

El estado de error debe ser claramente visible y accesible. En el componente de carga de archivos, puede incluir mensajes descriptivos, bordes en color rojo y/o íconos de advertencia con buen contraste. Esto permite que la persona usuaria identifique el problema (como un formato no permitido o un archivo demasiado pesado) y sepa cómo corregirlo, cumpliendo con las pautas de accesibilidad (WCAG).

Estado de error del input de carga de archivo

Deshabilitado (disabled)

Estado que indica que el botón no está disponible para la interacción, lo que significa que no puede activarse.

Estado deshabilitado del input de carga de archivo

Espaciados

La separación vertical entre elementos es de 8px tanto para dispositivos desktop como mobile.

Podes consultar ficha de patrones de formulario para conocer la separación entre secciones.

Esquema de espaciados del input de carga de archivo

Navegación alternativa

El componente de carga de archivo está construido para ser accesible mediante navegación por teclado y reconocible por lectores de pantalla, comunicando su estado (activado o desactivado) de forma clara.

TABENTER

Utilizando el tab la persona usuaria puede navegar a través de elementos de la interfaz. Además, con el enter, puede accionar los elementos sobre los que esté posicionada como botones, enlaces, entre otros.

Navegacion alternativa del campo de carga de archivo

Etiquetado descriptivo

Una carga de archivo siempre debe ir acompañado de una etiqueta <label> clara y relacionada con la acción u opción que representa.

El atributo "for" asocia un <label> con un elemento de formulario como un <input>, <select>, <textarea>, etc. mediante el "id" del elemento objetivo.

Interactividad limitada

Cuando un componente de carga de archivo está deshabilitado temporalmente, es importante indicarlo correctamente mediante el atributo "disabled". Además, debe evitarse que el foco del teclado llegue al componente, y debe comunicarse su estado a tecnologías de asistencia.

<div class="form-label-container"> 
   <label for="exampleInputFile" class="form-label">Label</label> 
   <span class="badge-forms badge-required-forms">Requerido</span>
</div>
<input type="file" class="form-control" id="exampleInputFile" name="uploadedFile" aria-describedby="carga de archivo" accept="image/png, image/jpeg" />
<p class="form-label-description">
  Este es un texto de ayuda que da mas información sobre el Input. Es opcional, pero recomendado, y de no más de 3 líneas.
</p>

Criterios WCAG aplicados

Success Criterion 1.3.1 Info and Relationships (Level A)

La información, la estructura y las relaciones transmitidas a través de la presentación pueden determinarse mediante programación o están disponibles en el texto.

Success Criterion 1.4.11 Non-Text Contrast (Level AA)

La presentación visual de elementos de la interfaz de usuario y objetos gráficos tiene por lo menos una relación de contraste de 3:1 con respecto a los colores adyacentes.

Success Criterion 2.1.1 Keyboard (Level A)

Todas las funcionalidades del contenido se puede operar a través de una interfaz de teclado.

Success Criterion 2.4.6 Headings and Labels (Level AA)

Si se utilizan encabezados o etiquetas, deben describir con precisión el propósito o contenido al que se refieren. Esto facilita la comprensión y navegación del contenido, especialmente para personas con discapacidades cognitivas o que utilizan lectores de pantalla.

Success Criterion 2.4.7 Focus Visible (Level AA)

Cualquier interfaz de usuario operable por teclado tiene un modo de operación donde el indicador de enfoque del teclado es visible. Cuando utiliza un teclado para navegar por los componentes, los enlaces tienen un subrayado visible y un recuadro outline que indica que los enlaces son interactivos.

Success Criterion 3.2.2 On Input (Level A)

Garantiza una experiencia predecible avisando desde el inicio sobre patrones poco comunes.Por ejemplo, una persona con dificultades cognitivas podría esperar revisar el archivo antes de enviarlo, y puede confundirse si el archivo se sube automáticamente al seleccionarlo.

Success Criterion 3.3.3 Error Suggestion (Level AA)

Asegurarse de que todos los textos de ayuda y mensajes de error brinden asistencia útil para evitar o corregir errores.
No uses mensajes poco claros, como "Seleccioná un formato de archivo válido" . En su lugar, aclarar qué formatos son válidos.

Navegación de pie de página