我正在尝试使用CodeIgniter创建一个上传表单,以便用户可以更改其个人资料图片。在我的Controller中有以下几行代码:
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();
....
除非出现错误,否则一切正常。该视图显示两次相同的错误:
您没有选择要上传的文件。
您没有选择要上传的文件。
答案 0 :(得分:1)
这样做:
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
,然后检查$_FILES
是否为空以运行代码块。
如果$this->upload->do_upload()
为TRUE且$_FILES
为空则会运行,但如果$_FILES
不为空,则会运行下一个条件,您再次运行$this->upload->do_upload()
条件。该函数正在if()
执行两次。条件检查从左到右运行。