我正在处理需要用户上传Microsoft Word文档的文档。验证上传的文件
除了检查文件扩展名是.doc还是.docx,有没有其他方法可以验证上传的文件实际上是Microsoft Word文档,而不是任何其他文件重命名为.doc或.docx扩展名。
在此先感谢。
我正在处理需要用户上传Microsoft Word文档的文档。验证上传的文件
除了检查文件扩展名是.doc还是.docx,有没有其他方法可以验证上传的文件实际上是Microsoft Word文档,而不是任何其他文件重命名为.doc或.docx扩展名。
在此先感谢。
如果您不使用PHP 5.3,那么mime_content_type
函数可能会让您感兴趣。
如果您使用PHP 5.3和/或可以安装PECL扩展,新的Fileinfo库应该可以完成这项工作;有关更多信息,请参见finfo_file
。
在给出的例子中,其中一个识别的MIME类型是“application/vnd.ms-excel
”;所以,有一点点运气,它应该能够处理MS Word文件太;-)
.docx
是一组使用标准zip
压缩方案压缩的XML文件。因此,您可以尝试将它传递给解压缩算法,并查看它是否解压缩,然后尝试查看其中正确的xml文件并检查期望在文档中找到的字段。
你可以尝试:
$type = `file -bi $UploadedFilePath`;
这将启动linux的file
计划,将考虑该文件的内容,并检测它的文件类型。
它适用于很多文件类型(我们在生产代码中使用它来检测上传的文件),但不确定在Microsoft Word文档版本上。
对于微软的.doc文件,您可以检查文件的前几个字节的幻数:
D0 CF 11 E0 A1 B1 1A E1
和字节偏移512处的“副标题”。