>以前我创建了一个包含几个文件上传的表单,它可以工作 好的,但现在我被要求添加第三个文件上传,这个第三次上传的字段动态显示,作为表单中存在的选择中的特定选项的结果,只有对于其中一个选项,会出现第三个上传, 没问题,没问题,但是,对第三个文件的要求是它必须是 CSV 文件,当我对其他两个文件(在表单控制器中)具有时,我如何处理其类型:
if (isset($_POST['save'])){
$this->load->library('upload');
$this->upload->initialize(array(
"upload_path" => "uploads/",
"overwrite" => TRUE,
"remove_spaces" => TRUE,
"allowed_types" => "txt|pdf|gif|jpg|png|tiff|doc|docx|rtf|jpeg",
"max_size" => 1024*2048,
"max_width"=> 1024,
"max_height"=> 768,
"xss_clean" => FALSE
));
foreach($_FILES as $field => $file){
if($file['error'] == 0){
if ($this->upload->do_upload($field)){
$data = $this->upload->data();
array_push($arreglo, $data['file_name']);
echo ($data['file_name']);
}else{
$errors = $this->upload->display_errors();
}
}
}
}
及其相应的验证规则; 这个第三个文件的不同之处在于它是一个CSV文件,而另外两个是图形或通常的文档类型,并且除了CSV之外,不应接受任何其他类型作为第三次上传,
(实际上是一半)解决了! 当您上传文件时,即使您不上传文件,$_FILES superglobal 也会为每个文件生成条目,因此,呼应$field
,我发现我可以使用该键分配文件类型,如下所示:
foreach($_FILES as $field => $file){
if($field != "file3"){
$config["allowed_types"] = "txt|pdf|gif|jpg|png|tiff|doc|docx|rtf|jpeg";
}else{
$config["allowed_types"] = "csv";
}
}
使用图形文件作为第三次上传进行测试,它只是没有上传! 如果您使用 CSV 文件,它可以毫无问题地上传:D
后期编辑:实际上解决了一半,对于每个切换文件类型,如果有第三次上传,它会切换到csv类型,如果没有,它会保留图形/常规文档类型,有什么想法吗?
最终编辑和解决方案:您只需要一个接一个地上传每个文件,并在每种情况下使用不同的规则设置相同的配置,如果您想阅读它,我在这里找到了它,感谢他的作者!在代码点火器中使用多个配置进行多个文件上传