在 Codeigniter 中额外上传第 3 个文件的特定处理


Specific handling for an additional 3rd file upload in Codeigniter

>以前我创建了一个包含几个文件上传的表单,它可以工作 好的,但现在我被要求添加第三个文件上传,这个第三次上传的字段动态显示,作为表单中存在的选择中的特定选项的结果,只有对于其中一个选项,会出现第三个上传, 没问题,没问题,但是,对第三个文件的要求是它必须是 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类型,如果没有,它会保留图形/常规文档类型,有什么想法吗?

最终编辑和解决方案:您只需要一个接一个地上传每个文件,并在每种情况下使用不同的规则设置相同的配置,如果您想阅读它,我在这里找到了它,感谢他的作者!在代码点火器中使用多个配置进行多个文件上传