Codeigniter 文件上传许可仅适用于图像,不适用于其他

Codeigniter File Upload Permit Only For Images not For Others

我必须连续进行文件上传操作,首先是 gif|jpg|jpeg|png|svg 这样的图片,然后是 psd|rar|zip|doc|word|txt|xlsx|pdf 第一个工作正常,我可以上传所有图像,但第二个,我无法上传任何这些类型,但是当我尝试在第二个片段上上传图像时它可以工作。

if (isset($_FILES['content_images']['name'])) {
    $count_files = count($_FILES['content_images']['name']);

    for ($i = 0; $i < $count_files; $i++) {
        $_FILES['image']['name'] = $_FILES['content_images']['name'][$i];
        $_FILES['image']['type'] = $_FILES['content_images']['type'][$i];
        $_FILES['image']['tmp_name'] = $_FILES['content_images']['tmp_name'][$i];
        $_FILES['image']['error'] = $_FILES['content_images']['error'][$i];
        $_FILES['image']['size'] = $_FILES['content_images']['size'][$i];
        $config_images['upload_path'] = "./public/site/images/contents";
        $config_images['allowed_types'] = 'gif|jpg|jpeg|png|svg';
        $config_images['max_size'] = 5000;
        $config_images['max_width'] = 7680;
        $config_images['max_height'] = 4320;
        $this->load->library("upload", $config_images);

        if (!$this->upload->do_upload('image')) {
            echo $this->upload->display_errors();
            exit;
        } else {
            $data = $this->upload->data();
            $path_images[] = "public/site/images/contents/".$data['file_name'];
        }
    }
}

if (isset($_FILES['content_files']['name'])) {
    $count_files=count($_FILES['content_files']['name']);

    for ($i = 0; $i < $count_files; $i++) {
        $_FILES['file']['name'] = $_FILES['content_files']['name'][$i];
        $_FILES['file']['type'] = $_FILES['content_files']['type'][$i];
        $_FILES['file']['tmp_name'] = $_FILES['content_files']['tmp_name'][$i];
        $_FILES['file']['error'] = $_FILES['content_files']['error'][$i];
        $_FILES['file']['size'] = $_FILES['content_files']['size'][$i];
        $config_files['upload_path'] = "./public/site/files/contents";
        $config_files['allowed_types'] = 'psd|rar|zip|doc|word|txt|xlsx|pdf';
        $config_files['max_size'] = 5000;
        $config_files['max_width'] = 7680;
        $config_files['max_height'] = 4320;
        $this->load->library("upload",$config_files);

        if (!$this->upload->do_upload('file')) {
            foreach($path_images as $p){
                unlink($p);
            }
            echo $this->upload->display_errors();
            exit;
        } else {
            $data=$this->upload->data();
            $path_files[] = "public/site/files/contents/".$data['file_name'];
        }
    }
}

我找到了解决办法 求助 : 你应该只在顶部加载库 1 次,然后你应该在 'if condition' 中初始化它。 当您在第一个条件中加载上传库和配置数组时,当您传递给第二个条件时,上传库已经加载并使用第一个条件的配置数组。

$this->load->library("upload");
            if(isset($_FILES['content_images']['name'])){
                $count_files=count($_FILES['content_images']['name']);
                for($i = 0;$i<$count_files;$i++){
                    $_FILES['image']['name'] = $_FILES['content_images']['name'][$i];
                    $_FILES['image']['type'] = $_FILES['content_images']['type'][$i];
                    $_FILES['image']['tmp_name'] = $_FILES['content_images']['tmp_name'][$i];
                    $_FILES['image']['error'] = $_FILES['content_images']['error'][$i];
                    $_FILES['image']['size'] = $_FILES['content_images']['size'][$i];
                    $config_images['upload_path'] = "./public/site/images/contents";
                    $config_images['allowed_types'] = 'gif|jpg|jpeg|png|svg';
                    $config_images['max_size'] = 5000;
                    $config_images['max_width'] = 7680;
                    $config_images['max_height'] = 4320;
                    $this->upload->initialize($config_images);
                    if(!$this->upload->do_upload('image')){
                        echo $this->upload->display_errors();
                        exit;
                    }else{
                        $data=$this->upload->data();
                        $path_images[] = "public/site/images/contents/".$data['file_name'];
                    }
                }
            }
            if(isset($_FILES['content_files']['name'])){
                $count_files=count($_FILES['content_files']['name']);
                for($i = 0;$i<$count_files;$i++){
                    $_FILES['file']['name'] = $_FILES['content_files']['name'][$i];
                    $_FILES['file']['type'] = $_FILES['content_files']['type'][$i];
                    $_FILES['file']['tmp_name'] = $_FILES['content_files']['tmp_name'][$i];
                    $_FILES['file']['error'] = $_FILES['content_files']['error'][$i];
                    $_FILES['file']['size'] = $_FILES['content_files']['size'][$i];
                    $config_files['upload_path'] = "./public/site/files/contents";
                    $config_files['allowed_types'] = 'psd|rar|zip|doc|word|txt|xlsx|pdf';
                    $config_files['max_size'] = 5000;
                    $config_files['max_width'] = 7680;
                    $config_files['max_height'] = 4320;
                    $this->upload->initialize($config_files);
                    if(!$this->upload->do_upload('file')){
                        foreach($path_images as $p){
                            unlink($p);
                        }
                        echo $this->upload->display_errors();
                        exit;
                    }else{
                        $data=$this->upload->data();
                        $path_files[] = "public/site/files/contents/".$data['file_name'];
                    }
                }
            }