如何为managed_file表单字段设置允许的扩展名?


27

没有任何运气可以在Drupal文档或开发人员示例中找到。我需要设置一个Managed_file表单字段,以仅在Drupal 7自定义模块中允许zip文件。

Answers:


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,但是它不起作用。
2014年

这对我来说是行不通的。
Mr_DeLeTeD 2014年

来自$ foo吗?
khaled_webdev

如果您手动保存文件,似乎不会自动进行验证。我必须这样做:$file = file_save_upload('file', $form['picture']['file']['#upload_validators']);
Leksat

这也适用于
Drupal8。– sanzante

1

我不确定您是使用Drupal 6还是Drupal 7,但是在Drupal 6中您会选择:

  • 管理员 > 内容 > 内容类型 > [您的内容类型]> 管理字段 > [编辑您的文件字段],然后查找“允许的上传文件扩展名”的字段设置

  • 在该字段中输入邮政编码

Drupal 7可能与此类似。在“ 管理” >“ 结构”下查找内容类型


Drupal 7,对不起,遗漏了。我在自定义模块中使用了Managed_field表单项,因此管理员无济于事。我需要一个编程解决方案。
加勒特

4
我相信您可以使用#upload_validators:$ form ['file'] ['#upload_validators'] ['file_validate_extensions'] [0] ='png jpg gif pdf';
黑暗附近

NEAR DARK赢得了比赛。在该行中粘贴后才意识到我在原始表单项数组中有一个错字。因此,基本上,这是表单api的一个有据可查的功能,由于拼写错误,我没有得到它。对不起大家。
加勒特

注意:在Drupal 6中只有文件,没有Managed_file表单字段。来源:Drupal 6 Form API参考
-Bart
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.