【问题标题】:Form validation With File Upload带有文件上传的表单验证
【发布时间】:2014-09-06 19:14:32
【问题描述】:

我有一个带有文件上传的表单。

我需要验证表单

这是我的验证码

   $this->form_validation->set_rules('career_experience','Experience','trim|required|xss_clean');
   $this->form_validation->set_rules('career_salary','Salary','trim|required|xss_clean');
   $this->form_validation->set_rules('career_resume','Resume','callback_check_file');

function check_file($str)
{
   if($str=="")
        {
             $this->form_validation->set_message('check_file', 'Please Upload A Resume');
             return false;
        }
        else if($str!="")
        {
             $ext = array();
             $ext = explode(".",$str);
             $allowed_ext = array("doc","pdf","pdf","docx","txt");
             if(isset($ext[1]) && $ext[1]!="")
                {
                    if (in_array($ext[1], $allowed_ext)) 
                    {
                        return true;
                    }
                    else
                    {
                        $this->form_validation->set_message('check_file', 'The File Is Not Supported');
                        return false;
                    }
                }
        }

}

现在的问题是,career_resume 的验证信息总是给我

"Please upload a resume";

所以这意味着即使我选择了一个文件,它也将 $str 声明为空字符串或 "" 字符串;

为什么会这样??

不需要$str = $_FILES['name'];

现在职业简历是 input="file"

这是表格

<form name="career_form" id="career_form" method="post"
            enctype="multipart/form-data" action="<?php echo site_url('pages/send_career_mail');?>">
<input name="career_experience" type="text"/>
<input name="career_salary" type="text"/>
<input name="career_resume" type="file"/>
</form>

【问题讨论】:

  • 请再检查一次,实际上我把文件误认为是
  • 你能展示你设置$str参数的那段代码吗?
  • 表单验证方法的codeigniter回调函数
  • 啊。不幸的是,我对codeigniter并不熟悉,但也许它没有用文件填充$str参数?如果您使用print_r($_FILES),您会看到什么?可以使用$_FILES 代替$str 参数,这不是一个选项吗?
  • @Saswat 不需要 $str = $_FILES['name']; - 不,您必须使用 $_FILES 对其进行验证。

标签: php codeigniter


【解决方案1】:

这个

<input name="career_resume" type="text"/>

应该是

<input name="career_resume" type="file"/>

【讨论】:

    【解决方案2】:

    在视图中:

    <input name="career_resume" type="file"/>
    


    在控制器中:

    $file_name = $_FILES['career_resume']['name'];
    


    更正:

    已添加['career_resume']


    说明:

    当你打印你的 $_FILES 数组时,你会得到一个键的详细信息,它实际上是输入文件标签的name

    print_r($_FILES);
    
    // will give you below array
    
    Array
    (
        [career_resume] => Array
        (
            [name] => abc.csv
            [type] => text/csv
            [tmp_name] => /tmp/phpkmmKZU
            [error] => 0
            [size] => 5466
        )
    )
    

    【讨论】:

      猜你喜欢
      • 2011-05-11
      • 2012-11-02
      • 1970-01-01
      • 2013-01-12
      • 2015-10-31
      • 1970-01-01
      • 2016-04-13
      • 2012-09-08
      • 1970-01-01
      相关资源
      最近更新 更多