【发布时间】:2018-02-20 17:33:27
【问题描述】:
我正在使用 Codeigniter 3.x。当我的表单提交时,如果表单验证为 FALSE,我上传的文件保留在主机上,这是一个错误。我正在使用回调函数进行上传。感谢您的任何解决方案...
$this->form_validation->set_rules('file', 'lang:pic',callback_multiple_upload');
//The callback
public function multiple_upload(){
$this->load->library('upload');
$number_of_files_uploaded = count($_FILES['file']['name']);
// Faking upload calls to $_FILE
for ($i = 0; $i < $number_of_files_uploaded; $i++){
if(!$_FILES['file']['name'][$i])
continue;
$_FILES['file[]']['name'] = $_FILES['file']['name'][$i];
$_FILES['file[]']['type'] = $_FILES['file']['type'][$i];
$_FILES['file[]']['tmp_name'] = $_FILES['file']['tmp_name'][$i];
$_FILES['file[]']['error'] = $_FILES['file']['error'][$i];
$_FILES['file[]']['size'] = $_FILES['file']['size'][$i];
$config = array(
'allowed_types' => 'jpg|jpeg|png|gif',
'encrypt_name' => TRUE,
'max_size' => 200,
'remove_spaces' => TRUE,
'overwrite' => FALSE,
'upload_path' => "./PATH/");
$this->upload->initialize($config,TRUE);
if($this->upload->do_upload("file[]")===FALSE){
$error = $this->upload->display_errors();
$this->form_validation->set_message('multiple_upload',$error);
return FALSE;
}
else{
$this->final_files_data[]=$this->upload->data();
}
}
return TRUE;
}
【问题讨论】:
-
请发布您的表单验证码
-
帖子已编辑,您现在可以看到代码了。
-
如果它对你有帮助 roytuts.com/codeigniter-multiple-files-upload/
-
表单验证回调用于验证而不是其他应用程序逻辑(例如上传)。想象一下,如果表单的其他元素评估为 false,文件将继续上传,直到用户提交有效的表单。回调将始终被调用。这乱七八糟的。对表单中的其他元素进行验证检查,然后再进行上传。如果那里有错误,则将这些错误发送给用户。不要尝试在表单验证中执行所有这些操作。
标签: php codeigniter