表单验证使用文件上载

时间:2014-07-16 09:55:24

标签: php codeigniter

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

我需要验证表格

这是我的验证码

   $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'];

现在职业简历是输入=“文件”

这是表格

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

2 个答案:

答案 0 :(得分:0)

这个

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

应该是

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

答案 1 :(得分:0)

在视图中

<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
    )
)