Php 如何使用Codeigniter上传.docx?(菲律宾)

Php 如何使用Codeigniter上传.docx?(菲律宾),php,codeigniter,file-upload,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';

我正在尝试使用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();
        }
 ....
上传功能在我的本地主机上运行良好。但是,当我尝试在服务器上上载.docx文件时,我得到“不允许您尝试上载的文件类型”

我可以上传服务器上的其他文件和代码是一个确切的副本,我在本地。我还在谷歌上搜索,发现一些人将.docx的mime改为:

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

但这似乎并没有解决问题。可能会出现什么问题?我如何解决问题以便解决此问题

尝试添加此mime类型:
application/zip
application/config/mimes.php
for
docx
。它对我有用。 如果没有帮助。打开
system/libraries/Upload.php
(第205行)并执行以下操作:

var_dump($this->file_type);
exit();

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

打开
应用程序/config/mimes.php
文件,并使用以下mime类型更改doc和docx的mime类型数组

'doc'  => array('application/msword', 'application/octet-stream'),
'docx' => array('application/msword', 'application/octet-stream','application/vnd.openxmlformats-officedocument.wordprocessingml.document'),

用上面的mime类型数组替换doc和docx元素值。

这帮助我回答了这个问题。出于某种原因,它将其视为“application/x-zip”。我把它添加到docx的mime类型中,它成功了。几周前,我遇到了类似的问题。很高兴,我的决定对您有所帮助。感谢您提供的解决方案,在我的案例中,它显示了我在mime中添加的inode/x-empty,并且工作正常。对我来说,mime类型“application/zip”已经存在,但上载的.docx无法工作。添加“application/msword”使其正常工作。看来,我们必须尝试一下。是的,按照您的建议检查文件类型,非常有帮助并解决了问题。不确定差异是否是由于Codeigniter 3.1.8的服务器设置造成的,它将位于第462行