【发布时间】: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