【发布时间】:2019-03-01 01:36:07
【问题描述】:
以前出现过这个问题,我关注了this answer,但没有任何乐趣。
我正在尝试将 .docx 文件上传到我的 CI 应用程序,但它给了我
您尝试上传的文件类型不允许。
现在,当我通过将 system/libraries/upload.php 的第 199 行更改为 vardump 接收文件的 mimetype 时
$this->_file_mime_type($_FILES[$field]); die(var_dump($this->file_type));
我明白了
application/vnd.openxmlformats-officedocument.wordprocessingml.document; 字符集=二进制
...在我的 application/config/mimes.php 文件中列出作为 docx 可接受的 mime。
既然如此,还有什么问题?
【问题讨论】:
-
您是否在接受表单输入的控制器中指定了允许的类型?确保您正确设置了允许的类型:
$config['allowed_types'] = 'docx|pdf|xlsx';(修改为仅接受您想要的文件类型)。 CI 2 文件上传类可能会有所帮助:codeigniter.com/userguide2/libraries/file_uploading.html -
您是否将扩展名设置为允许的类型,例如在您的上传控制器中,仅将其列在 mime 类型中并不意味着它可以上传。设置 $config['allowed_types'] = 'gif|jpg|png|pdf|docx|doc';
-
啊,好地方。刚刚添加它......但它仍然不允许上传 .docx。现在肯定在我的
allowed_types配置参数中列出... -
所以事实证明,当它深入 CI 的
system/libraries/uploads.php脚本时,MIME 已经以某种方式演变为application/msword。这个不是在我的 mime 中(根据我粗略的研究,它甚至不是一个有效的 .docx MIME)。所以我不知道它是如何从程序早期的正确 MIME 得到的。无论如何,该 MIME 现在已添加到我的列表中并且现在可以使用了。 -
@Utkanos 您能否发表您的最后评论(也许还有更多见解)作为答案,谢谢
标签: php codeigniter upload mime-types docx