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.

Garrett
la source

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),
  ),
);
Bart
la source
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 .

PROCHE NOIR
la source
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