Forms 使用表单API验证Drupal 7文件字段上的文件扩展名和文件大小

Forms 使用表单API验证Drupal 7文件字段上的文件扩展名和文件大小,forms,validation,drupal,drupal-7,Forms,Validation,Drupal,Drupal 7,我使用的是Drupal 7,有一个自定义模块,用于创建具有文件上载字段的表单: $form['resume_file'] = array( '#type' => 'file', '#title' => t('Resume Upload'), ); 我需要确保文件扩展名是下列之一:doc、docx、pdf、txt和rtf,并且文件大小不超过2MB 我没有在文件中找到一个明确的方法来实现这一点。我看到一个地方说用这个: $form['resume_file'] =

我使用的是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\u form\u 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'; 

这也没做什么。如何验证文件大小和扩展名?

它实际上应该可以工作。我们只需要在upload\u validators下提到文件扩展名和文件大小

例如:

'#upload_validators' => array(
    'file_validate_extensions' => array('gif png jpg jpeg'),
    'file_validate_size' => array(MAX_FILE_SIZE*1024*1024),
  ),

它实际上应该是有效的。我们只需要在upload\u validators下提到文件扩展名和文件大小

例如:

'#upload_validators' => array(
    'file_validate_extensions' => array('gif png jpg jpeg'),
    'file_validate_size' => array(MAX_FILE_SIZE*1024*1024),
  ),
upload_验证器是托管文件表单元素的非标准表单元素属性的一部分

$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),
  ),
);
有关托管文件元素类型的详细信息,请参见上载验证程序是托管文件表单元素的非标准表单元素属性的一部分

$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),
  ),
);

有关托管文件元素类型的更多信息,请参阅druapl 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,

),

druapl 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,

),

非常感谢。最大文件大小来自哪里?我得到了这个错误:使用未定义的常量MAX_FILE_SIZE-假定为“MAX_FILE_SIZE”,我需要在SIZE数组中放入什么来指定2MB?我不明白其中的数学原理。而且,即使我从公式中去掉MAX_FILE_SIZE,只使用'FILE_validate_SIZE'=>array1000,作为测试,它仍然允许我上传错误的文件类型和文件大小。我没有收到错误消息。我正在使用你给我的“文件验证扩展名”=>数组“gif png jpg jpeg”,我试着上传一个.txt文件,结果没有问题。MAX_file_大小为你想要的大小,例如:10mb:array10*1024*1024谢谢。最大文件大小来自哪里?我得到了这个错误:使用未定义的常量MAX_FILE_SIZE-假定为“MAX_FILE_SIZE”,我需要在SIZE数组中放入什么来指定2MB?我不明白其中的数学原理。而且,即使我从公式中去掉MAX_FILE_SIZE,只使用'FILE_validate_SIZE'=>array1000,作为测试,它仍然允许我上传错误的文件类型和文件大小。我没有收到错误消息。我正在使用你给我的“文件验证扩展名”=>数组“gif png jpg jpeg”,并且我尝试上载一个.txt文件,结果没有问题。MAX_file_将其大小设置为你想要的大小,例如:10mb:array10*1024*1024