Php 上载表单两次抛出相同的错误
我正在尝试使用CodeIgniter创建一个上传表单,让用户能够更改他们的个人资料图片。在我的控制器中有以下代码行:Php 上载表单两次抛出相同的错误,php,codeigniter,file-upload,Php,Codeigniter,File Upload,我正在尝试使用CodeIgniter创建一个上传表单,让用户能够更改他们的个人资料图片。在我的控制器中有以下代码行: if(!$this->upload->do_upload() && empty($_FILES['userfile'])) { $data['upload'] = "0"; $this->load->view('editpicture', $data); } elseif (!$this->upload->do_
if(!$this->upload->do_upload() && empty($_FILES['userfile'])) {
$data['upload'] = "0";
$this->load->view('editpicture', $data);
} elseif (!$this->upload->do_upload() && !empty($_FILES['userfile'])) {
$data['upload'] = "0";
$data['attempt'] = "1";
$data['error'] = $this->upload->display_errors();
$this->load->view('editpicture', $data);
} else {
$upload_data = $this->upload->data();
....
除了我出错外,一切正常。该视图两次显示相同的错误:
您没有选择要上载的文件。您没有选择要上载的文件 这样做:
if(!$this->upload->do_upload()) {
if (empty($_FILES['userfile'])) {
$data['upload'] = "0";
$this->load->view('editpicture', $data);
} else {
$data['upload'] = "0";
$data['attempt'] = "1";
$data['error'] = $this->upload->display_errors();
$this->load->view('editpicture', $data);
}
} else {
$upload_data = $this->upload->data();
....
发生这种情况的原因是您正在运行两次$this->upload->do_upload()
。第一个条件运行它以查看它是否为FALSE
,然后检查$\u FILES
是否为空以运行代码块
如果$this->upload->do\u upload()
为真,并且$\u FILES
为空,那么它将运行,但如果$\u FILES
不为空,它将在下一个条件下运行,在该条件下再次运行$this->upload->do\u upload()
。该函数在if()
中执行了两次。条件检查从左到右运行。执行以下操作:
if(!$this->upload->do_upload()) {
if (empty($_FILES['userfile'])) {
$data['upload'] = "0";
$this->load->view('editpicture', $data);
} else {
$data['upload'] = "0";
$data['attempt'] = "1";
$data['error'] = $this->upload->display_errors();
$this->load->view('editpicture', $data);
}
} else {
$upload_data = $this->upload->data();
....
发生这种情况的原因是您正在运行两次$this->upload->do_upload()
。第一个条件运行它以查看它是否为FALSE
,然后检查$\u FILES
是否为空以运行代码块
如果
$this->upload->do\u upload()
为真,并且$\u FILES
为空,那么它将运行,但如果$\u FILES
不为空,它将在下一个条件下运行,在该条件下再次运行$this->upload->do\u upload()
。该函数在if()
中执行了两次。条件检查从左到右运行。我的朋友,这就是解决方案!谢谢你,我的朋友,这就是解决办法!非常感谢。