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