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

时间:2013-08-14 14:12:53

标签: 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();
        }
 ....

上传功能在我的本地主机上正常运行。但是,当我尝试在服务器上上传.docx文件时,我会收到“您尝试上传的文件类型”。

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

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

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

2 个答案:

答案 0 :(得分:12)

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

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

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

答案 1 :(得分:0)

打开application/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'),

只需将doc和docx元素值替换为上述mime类型数组即可。