使用PHP上传时出现MIME错误
我正在构建的网站允许授权用户上传文件。 对于任何特定的上传类别,都允许使用一组文件类型,例如.pdf和.docx,以便我的客户可以选择他们想要接受的内容。
上传时,我检查上传文件的MIME类型(使用finfo_open(FILEINFO_MIME_TYPE)
)针对该扩展名的MIME类型的数据库表。
在测试中,我从PC上传了一个docx文件 - 它有一个docx扩展名,Windows将文件类型报告为application / vnd.openxmlformats-officedocument.wordprocessingml.document,这正是我所期望的。 但是, finfo_open
正在给我一个MIME类型的application / msword。
finfo_open的信息是来自文件内部,还是来自浏览器或上传过程中的某些内容(在这种情况下,我想我需要指定允许的其他MIME类型)还是Web服务器中的某些内容(在这种情况下,它可以用php.ini修改)?
我相信在PHP中使用$ _FILES来检出文件的MIME类型更安全。
不过,我认为这并不令人困扰。 你确定你给了docx
而不仅仅是一个doc
文档吗? 通常, application/msword
是doc
文件扩展名的MIME类型...确保使用正确版本的Microsoft Word以正确的格式保存文件,然后重试。 此外,我会尝试使用$_FILES
上的print_r
来查看它是否告诉你有关该文件的内容? 它是否告诉你该文件具有不同的MIME类型?