使用 PHP 上传时出现 MIME 错误 - docx 文件


MIME error when uploading with PHP - docx files

我正在构建的网站允许授权用户上传文件。 对于任何特定类别的上传,允许一组文件类型,例如.pdf和.docx,以便我的客户可以选择他们想要接受的内容。

上传时,我根据该扩展名的 MIME 类型数据库表检查上传文件的 MIME 类型(使用 finfo_open(FILEINFO_MIME_TYPE))。

在测试中,我正在从我的PC上传一个docx文件 - 它有一个docx扩展名,Windows将文件类型报告为application/vnd.openxmlformats-officedocument.wordprocessingml.document,这是我所期望的。 但是,finfo_open给了我一个MIME类型的应用程序/msword。

finfo_open的信息是来自文件内部还是来自浏览器或上传过程中的某些内容(在这种情况下,我想我需要指定允许的其他 MIME 类型)还是 Web 服务器中的内容(在这种情况下,可以使用 php.ini 对其进行修改)?

我相信

在PHP中使用$ _FILES签出文件MIME类型更安全。

不过,我认为这并不麻烦。你确定你给了docx而不仅仅是一份doc文件吗?通常application/msworddoc文件扩展名的 MIME 类型......请确保使用正确版本的 Microsoft Word 和正确的格式保存文件,然后重试。另外,我会尝试在$_FILES上使用print_r,看看它是否告诉您有关该文件的信息?它是否告诉您该文件具有不同的 MIME 类型?