Як встановити дозволені розширення для поля форми керованого файлу?


27

Не маючи шансу знайти це в документації Drupal або прикладах для розробників. Мені потрібно встановити поле форми керованого_файлу, щоб дозволити лише поштові файли у спеціальному модулі Drupal 7.

Відповіді:


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
Я спробував файл_validate_size, але він не працює.
АРУН

Це не працює для мене.
Mr_DeLeTeD

ми походили з $ foo?
khaled_webdev

Здається, перевірка не відбувається автоматично, якщо ви збережете файл вручну. Мені довелося це зробити так:$file = file_save_upload('file', $form['picture']['file']['#upload_validators']);
Лексат

Це працює також у Drupal 8.
sanzante

1

Я не впевнений, чи використовуєте ви Drupal 6 або Drupal 7, але в Drupal 6 ви вибрали б:

  • Адміністратор > Вміст > Типи вмісту > [Тип вашого вмісту]> Керування полями > [Редагувати поле вашого файлу] та знайдіть налаштування поля "Дозволені розширення файлу завантаження"

  • У цьому полі введіть zip

Drupal 7, ймовірно, схожий. Шукайте типи вмісту в розділі Адміністратор > Структура .


Drupal 7, вибачте за упущення. Я використовую елемент форми Managed_field у спеціальному модулі, тому адміністратор не допоможе. Мені потрібно рішення для програмування.
Гаррет

4
Я вважаю, ви можете використовувати #upload_validators: $ form ['file'] ['# upload_validators'] ['file_validate_extensions'] [0] = 'png jpg gif pdf';
БЛИЗЬКА ТЕМА

БЛИЗЬКИЙ МОРОК виграє його. Потрібно вставити в цей рядок, щоб зрозуміти, що я мав друк у своєму масиві початкових форм. Таким чином, це добре задокументована особливість форми api, яку я не отримав через орфографічну помилку. Вибачте, хлопці.
Гаррет

Примітка: у Drupal 6 немає поля форми керованого_файлу, лише файл. Джерело: Посилання на API форма Drupal 6
Барт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.