我有一个带文件上传的表单。
我需要验证表格
这是我的验证码
$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>
答案 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
)
)