Как установить допустимые расширения для поля формы managed_file?

27

Не повезло найти это в документации Drupal или в примерах для разработчиков. Мне нужно установить поле формы managed_file, чтобы разрешить только zip-файлы в пользовательском модуле Drupal 7.

Garrett
источник

Ответы:

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
Я попытался file_validate_size, но он не работает.
ARUN
Это не работает для меня.
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, вероятно, похож. Ищите Типы контента под Admin > Структура .

РЯДОМ ТЕМНО
источник
Drupal 7, извините за упущение. Я использую элемент формы managed_field в пользовательском модуле, поэтому администратор не поможет. Мне нужно решение для программирования.
Гарретт
4
Я полагаю, вы можете использовать #upload_validators: $ form ['file'] ['# upload_validators'] ['file_validate_extensions'] [0] = 'png jpg gif pdf';
РЯДОМ, ТЕМНО,
NEAR DARK выигрывает это. В этой строке понадобилось вставить, чтобы понять, что у меня есть опечатка в исходном массиве элементов формы. В общем, это хорошо документированная особенность формы API, которую я не получил из-за орфографической ошибки. Извините ребята.
Гарретт
Примечание: в Drupal 6 нет поля формы управляемого_файла, только файл. Источник: Справочник по API формы Drupal 6
Барт,