Comment définir les extensions autorisées pour un champ de formulaire managed_file?


27

Si vous n'avez pas de chance, trouvez-le dans la documentation Drupal ou dans les exemples de développement. J'ai besoin de définir un champ de formulaire managed_file pour autoriser uniquement les fichiers zip dans un module personnalisé Drupal 7.

Réponses:


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),
  ),
);

1
J'ai essayé le file_validate_size, mais cela ne fonctionne pas.
ARUN

Cela ne fonctionne pas pour moi.
Mr_DeLeTeD

venons-nous de $ foo?
khaled_webdev

Il semble que la validation ne se fasse pas automatiquement si vous enregistrez un fichier manuellement. Je devais le faire comme ceci:$file = file_save_upload('file', $form['picture']['file']['#upload_validators']);
Leksat

Cela fonctionne aussi dans Drupal 8.
sanzante

1

Je ne sais pas si vous utilisez Drupal 6 ou Drupal 7, mais dans Drupal 6, vous choisiriez:

  • Admin > Contenu > Types de contenu > [Votre type de contenu]> Gérer les champs > [Modifier votre champ de fichier] et recherchez le paramètre de champ "Extensions de fichier de téléchargement autorisées"

  • Dans ce champ, entrez zip

Drupal 7 est probablement similaire. Recherchez les types de contenu sous Admin > Structure .


Drupal 7, désolé pour l'omission. J'utilise un élément de formulaire managed_field dans un module personnalisé, donc l'administrateur ne va pas aider. J'ai besoin d'une solution de programmation.
Garrett

4
Je pense que vous pouvez utiliser #upload_validators: $ form ['file'] ['# upload_validators'] ['file_validate_extensions'] [0] = 'png jpg gif pdf';
NEAR DARK

NEAR DARK le gagne. Il a fallu coller dans cette ligne pour réaliser que j'avais une faute de frappe dans mon tableau d'éléments de formulaire d'origine. Donc, fondamentalement, c'est une fonctionnalité bien documentée de l'API de formulaire que je n'obtenais pas en raison d'une erreur d'orthographe. Désolé les gars.
Garrett

Remarque: il n'y a pas de champ de formulaire managed_file dans Drupal 6, seulement un fichier. Source: Référence de l'API Drupal 6 Form
Bart
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.