【发布时间】:2026-01-16 01:20:07
【问题描述】:
我想一次上传多个文件。 我以这种方式在我的表单中使用:
<input type="file" name="files[]" multiple/>
问题是我想在我的配置目录上正确上传之前验证每个文件。
如果有人一次上传 15 个文件并且一个文件没有有效的大小和/或类型....我想中止所有文件的上传并在表单上给出错误。 Al 认为很好,但我不能先检查(使用 codeigniter 库上传) 我尝试这样做以验证文件是否有效,但它们已经上传到我的文件夹文件中,我不想要这个:
if ($_FILES['files']['name']['0'] != '') {
$config['upload_path'] = 'docs/';
$config['allowed_types'] = 'jpg|jpeg|png|gif|pdf';
$this->load->library('upload',$config);
foreach ($_FILES['files']['name'] as $key=>$value) {
$file_upload[$key] = array(
'name'=>$_FILES['files']['name'][$key],
'type'=>$_FILES['files']['type'][$key],
'tmp_name'=>$_FILES['files']['tmp_name'][$key],
'error'=>$_FILES['files']['error'][$key],
'size'=>$_FILES['files']['size'][$key]
);
}
$i = 0;
foreach ($file_upload as $key=>$file) {
$this->upload->initialize($config);
$_FILES['file' . $key] = $file_upload[$key];
if(!$this->upload->do_upload('file' . $key)) {
if ($i == 0) {
$this->error['files_error'] = sprintf($this->upload->display_errors(),$_FILES['file' . $key]['name']);
$this->error['error_warning'] = $this->lang->line('error_warning_form');
} else {
$this->error['files_error'] .= sprintf($this->upload->display_errors(),$_FILES['file' . $key]['name']);
}
$i++;
}
}
}
我想验证每个文件,如果所有文件都正常,则将它们上传到我的文件夹
附:对不起我的英语
感谢您的帮助
【问题讨论】:
-
上传文件时能否显示错误截图?
-
您总是至少有一个临时文件夹,其中确实上传了文件。这就是为什么许多人还应用客户端验证的原因。
-
上传文件时不会出错。我的表格很大。如果(任何输入字段的)表单中有任何错误,用户将看到错误。用户必须再次选择要上传的文件。每次我验证表单并且无效时,检查要上传的文件是否为正确类型的唯一方法是使用 $this->upload->do_upload()。但是每次我验证要上传的文件时,我的文件目录中都会有 file.pdf、file1.pdf、file3.pdf 等等。只有最后一个文件也将与我在数据库中的表单链接。在该函数移动文件之前,它们位于 /tmp/ 中。有什么方法可以为此使用 codeigniter 吗?
标签: php codeigniter file-upload