我正在制作一份文档,要求用户上传Microsoft Word文档。
除了检查文件扩展名为.doc或.docx之外,还有其他方法可以验证上传的文件实际上是Microsoft Word文档而不是任何其他文件重命名为.doc或.docx扩展名。
提前致谢。
答案 0 :(得分:6)
如果您没有使用PHP 5.3,mime_content_type
功能可能会让您感兴趣。
如果您使用的是PHP 5.3和/或可以安装PECL扩展,那么新的Fileinfo库应该可以完成这项任务。有关更多信息,请参阅finfo_file
。
在给定的示例中,所识别的mime类型之一是“application/vnd.ms-excel
”;所以,运气好的话,它应该能够处理MS Word文件; - )
答案 1 :(得分:5)
.docx
是一组使用标准zip
压缩方案压缩的XML文件。因此,您可以尝试将其传递给解压缩算法并查看它是否已解压缩,然后尝试查看其中的正确xml文件,并检查文档中预期会找到的字段。
答案 2 :(得分:3)
你可以尝试:
$type = `file -bi $UploadedFilePath`;
那将启动linux file
程序,该程序将查看文件内容并检测它是哪种文件类型。
它适用于许多文件类型(我们在生产代码中使用它来检测上传的文件),但不确定Microsoft Word文档版本。
答案 3 :(得分:3)
对于Microsoft .doc文件,您可以检查文件的前几个字节是否有幻数:
D0 CF 11 E0 A1 B1 1A E1
和“subheaders”在字节偏移512处。