我正在使用Drupal 7并拥有一个自定义模块,可以创建一个包含文件上传字段的表单:
$form['resume_file'] = array(
'#type' => 'file',
'#title' => t('Resume Upload'),
);
我需要确保文件扩展名是以下之一:doc,docx,pdf,txt和rtf,文件大小不超过2MB
我没有在文档中找到明确的方法来实现这一目标。我看到有一个地方用过这个:
$form['resume_file'] = array(
'#type' => 'file',
'#title' => t('Resume Upload'),
'#upload_validators' => array("file_validate_extensions" => array("doc docx pdf txt rtf")),
);
但是,就阻止错误的文件类型和给出错误消息而言,这没有做任何事情。我是否需要在hook_form_validate()函数中做一些额外的事情?
我也看到了这个:
$form['resume_file'] = array(
'#type' => 'file',
'#title' => t('Resume Upload'),
);
$form['resume_file']['#upload_validators']['file_validate_extensions'][0] = 'doc docx pdf txt rtf';
哪个也没有做任何事情。如何验证文件大小和扩展名?
答案 0 :(得分:4)
它应该实际工作。我们只需提及file_validate_extensions
& file_validate_size
下的upload_validators
。
示例:
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
'file_validate_size' => array(MAX_FILE_SIZE*1024*1024),
),
答案 1 :(得分:3)
drupal 7中表单api中的文件上传控件,带有扩展和大小验证
'resume'=>array(
'#type' => "managed_file",
'#title' => t("Upload Resume in Word Format"),
'#descripion' => t("Only doc or docx format Files are allowed."),
'#upload_location' => "public://resume/",
"#upload_validators" => array("file_validate_extensions" => array("doc docx")),
'#required'=>TRUE,
),
答案 2 :(得分:1)
#upload_validators
是托管文件表单元素的非标准表单元素属性的一部分。
$element = array(
'#type' => 'managed_file',
'#title' => t('Resume Upload'),
'#upload_validators' => array(
'file_validate_extensions' => array('gif png jpg jpeg'),
'file_validate_size' => array(MAX_FILE_SIZE*1024*1024),
),
);
有关托管文件元素类型的详细信息,请参阅Drupal Form API reference