Como definir extensões permitidas para um campo de formulário managed_file?

27

Não tendo sorte, encontre isso na documentação do Drupal ou em exemplos de desenvolvedores. Preciso definir um campo de formulário managed_file para permitir apenas arquivos zip em um módulo personalizado do Drupal 7.

Garrett
fonte

Respostas:

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
fonte
11
Eu tentei o file_validate_size, mas ele não funciona.
ARUN
Não funciona para mim.
Mr_DeLeTeD
viemos de $ foo?
Khaled_webdev 21/07
Parece que a validação não ocorre automaticamente se você salvar um arquivo manualmente. Eu tinha que fazê-lo como este:$file = file_save_upload('file', $form['picture']['file']['#upload_validators']);
Leksat
Isso funciona também no Drupal 8.
sanzante 23/02
1

Não tenho certeza se você está usando o Drupal 6 ou o Drupal 7, mas no Drupal 6 você escolheria:

  • Admin > Conteúdo > Tipos de conteúdo > [Seu tipo de conteúdo]> Gerenciar campos > [Editar seu campo de arquivo] e procure a configuração de campo "Extensões de arquivo de upload permitidas"

  • Nesse campo, insira zip

Drupal 7 é provavelmente semelhante. Procure Tipos de conteúdo em Admin > Estrutura .

PERTO ESCURO
fonte
Drupal 7, desculpe pela omissão. Estou usando um item de formulário managed_field em um módulo personalizado, para que o administrador não ajude. Eu preciso de uma solução de programação.
Garrett
4
Eu acredito que você pode usar #upload_validators: $ form ['file'] ['# upload_validators'] ['file_validate_extensions'] [0] = 'png jpg gif pdf';
NEAR DARK
NEAR DARK vence. Foi preciso colar nessa linha para perceber que eu tinha um erro de digitação na minha matriz de itens de formulário original. Então, basicamente, esse é um recurso bem documentado da API do formulário que eu não estava recebendo devido a um erro de ortografia. Desculpem rapazes.
Garrett
Nota: não há campo de formulário managed_file no Drupal 6, apenas arquivo. Fonte: Referência da API do Drupal 6 Form
Bart