Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 代码点火器2-can和x27;t upload.docx文件_Php_Codeigniter_Upload_Mime Types_Docx - Fatal编程技术网

Php 代码点火器2-can和x27;t upload.docx文件

Php 代码点火器2-can和x27;t upload.docx文件,php,codeigniter,upload,mime-types,docx,Php,Codeigniter,Upload,Mime Types,Docx,这件事以前发生过,我也跟着发生过,但没有什么乐趣 我正在尝试将.docx文件上载到我的CI应用程序,但它给了我 不允许您尝试上载的文件类型 现在,当我将system/libraries/upload.php的第199行更改为 $this->_file_mime_type($_FILES[$field]); die(var_dump($this->file_type)); 我明白了 application/vnd.openxmlformats-officedocument.wordp

这件事以前发生过,我也跟着发生过,但没有什么乐趣

我正在尝试将.docx文件上载到我的CI应用程序,但它给了我

不允许您尝试上载的文件类型

现在,当我将system/libraries/upload.php的第199行更改为

$this->_file_mime_type($_FILES[$field]); die(var_dump($this->file_type));
我明白了

application/vnd.openxmlformats-officedocument.wordprocessingml.document; 字符集=二进制

…这在我的application/config/mimes.php文件中作为docx可接受的mime列出


在这种情况下,还有什么不对劲的吗?

我最近也遇到了同样的问题,花了一整天的时间来解决它,但没有成功。
我建议您不要浪费时间,只需允许所有文件,然后使用php函数检查文件是否为.docx

事实证明,在CI流的某个地方,mime是从

application/vnd.openxmlformats-officedocument.wordprocessingml.document

应用程序/msword

我不知道这是在什么时候发生的,也不知道为什么。当我在我的CI控制器方法中运行以下命令时,我得到了前者

$finfo = finfo_open(FILEINFO_MIME);
$mime = finfo_file($finfo, 'path/to/file.docx');
var_dump($mime);
所以我不知道在这一过程中它是如何变成后者的


不用说,将“application/msword”添加到上传选项的
允许的\u类型
区域(传递到
$this->upload->initialize($options)
)解决了这个问题。

Hmm,我知道为什么要这样做,但这不是一个有吸引力的解决方案。CI正确派生mime类型,并且该mime类型列在其mime白名单中,因此它一定是CI中某个位置的错误。您是否在接受表单输入的控制器中指定允许的类型?确保正确设置了允许的类型:
$config['allowed_types']='docx | pdf | xlsx'(修改为仅接受所需的文件类型)。CI 2文件上载类可能会有所帮助:是否已将扩展名设置为允许的类型(例如,在上载控制器中),仅将其列在mime类型中并不意味着允许上载。设置$config['allowed_types']='gif | jpg | png | pdf | docx | doc';啊,好地方。刚刚加上去的。。。但它仍然不允许.docx上传。我的
allowed_types
config param now中已经明确列出了……因此,当它深入到CI的
system/libraries/uploads.php
脚本时,MIME不知何故已经变形为
application/msword
。这不在我的MIME中(根据我粗略的研究,它甚至不是一个有效的.docx MIME)。所以我不知道它是如何从正确的MIME中得到的。在任何情况下,这个MIME现在被添加到我的列表中,它现在可以工作了。@Utkanos你能发布你最后的评论(也许还有更多的见解)作为答案吗,谢谢