¿Cómo configuro extensiones permitidas para un campo de formulario de archivo_administrado?

27

Al no tener suerte, encuentre esto en la documentación de Drupal o en ejemplos de desarrolladores. Necesito establecer un campo de formulario managed_file para permitir solo archivos zip en un módulo personalizado de Drupal 7.

Garrett
fuente

Respuestas:

40
$form['picture']['file'] = array(
  '#type' => 'managed_file',
  '#title' => t('picture'),
  '#description' => t('Allowed extensions: gif png jpg jpeg'),
  '#default_value' => (isset($foo->picture->fid) ? $foo->picture->fid : ''),
  '#upload_location' => variable_get('picture_upload_location'),
  '#upload_validators' => array(
    'file_validate_extensions' => array('gif png jpg jpeg'),
    // Pass the maximum file size in bytes
    'file_validate_size' => array(MAX_FILE_SIZE*1024*1024),
  ),
);
Bart
fuente
1
Intenté el file_validate_size, pero no funciona.
ARUN
No me funciona.
Mr_DeLeTeD
venimos de $ foo?
khaled_webdev
Parece que la validación no ocurre automáticamente si guarda un archivo manualmente. Tenía que hacerlo así:$file = file_save_upload('file', $form['picture']['file']['#upload_validators']);
Leksat
Esto también funciona en Drupal 8.
sanzante
1

No estoy seguro si está utilizando Drupal 6 o Drupal 7, pero en Drupal 6 elegiría:

  • Admin > Contenido > Tipos de contenido > [Su tipo de contenido]> Administrar campos > [Editar su campo de archivo] y busque la configuración de campo de "Extensiones de archivo de carga permitidas"

  • En ese campo, ingrese zip

Drupal 7 es probablemente similar. Busque Tipos de contenido en Administrador > Estructura .

CERCA DE OSCURO
fuente
Drupal 7, perdón por la omisión. Estoy usando un elemento de formulario managed_field en un módulo personalizado, por lo que el administrador no va a ayudar. Necesito una solución de programación.
Garrett
44
Creo que puede usar #upload_validators: $ form ['file'] ['# upload_validators'] ['file_validate_extensions'] [0] = 'png jpg gif pdf';
CERCA
NEAR DARK lo gana. Me tomó pegar en esa línea para darme cuenta de que tenía un error tipográfico en mi matriz de elementos de forma original. Básicamente, esta es una característica bien documentada de la API de formulario que no estaba obteniendo debido a un error ortográfico. Lo siento chicos.
Garrett
Nota: no hay un campo de formulario de archivo_gestionado en Drupal 6, solo archivo. Fuente: Referencia de la API del formulario Drupal 6
Bart