如何使用Codeigniter上传.docx?(PHP)

She*_*don 6 php codeigniter file-upload

我正在尝试使用Codeigniter中的上传帮助程序上传.docx.

public function upload($id,$type){
        $folder = $type;
        $config['upload_path'] = RESOURCE_PATH . $folder;
        $config['allowed_types'] = 'pdf|doc|docx';
        $config['max_size'] = '100000';
        $this->CI->load->library('upload',$config);
        //$this->load->library('upload', $config);
        if (!$this->CI->upload->do_upload('userfile')){
            echo $this->CI->upload->display_errors();
        }
 ....
Run Code Online (Sandbox Code Playgroud)

上传功能在我的本地主机上正常工作.但是,当我尝试在服务器上上传.docx文件时,我得到"您尝试上传的文件类型是不允许的".

我可以在服务器上传其他文件,代码是我本地的精确副本.我也搜索了一下,发现有些人将.docx的mime更改为:

'docx'  =>  array('application/msword','application/vnd.openxmlformats-officedocument.wordprocessingml.document','application/octet-stream')  
Run Code Online (Sandbox Code Playgroud)

但这似乎没有解决问题.可能出现什么问题,如何解决问题以便解决此问题?

jon*_*nes 14

尝试添加这个mime类型:application/zipto application/config/mimes.phpfor docx.这个对我有用.如果没有帮助.打开system/libraries/Upload.php(第205行)并执行此操作:

var_dump($this->file_type);
exit();
Run Code Online (Sandbox Code Playgroud)

您将看到.docx的文件类型,需要将其添加到config中的docx mimes列表中.

  • 对我来说,mime类型'application/zip'已经上传但.docx上传无效.添加'application/msword'使它工作.所以看来,人们必须尝试一下.是的,按照您的建议检查file_type,非常有帮助并解决问题.不确定是否因为服务器设置而出现差异 (3认同)
  • 对于 Codeigniter 3.1.8,它将在第 462 行 (2认同)