【问题标题】:Verifying Uploaded File验证上传的文件
【发布时间】:2010-12-18 02:34:28
【问题描述】:

我正在处理需要用户上传 Microsoft Word 文档的文档。

除了检查文件扩展名为 .doc 或 .docx 之外,还有其他方法可以验证上传的文件实际上是 Microsoft Word 文档,而不是任何其他重命名为 .doc 或 .docx 扩展名的文件。

提前致谢。

【问题讨论】:

    标签: php file-upload mime-types


    【解决方案1】:

    .docx 是一组使用标准zip 压缩方案压缩的 XML 文件。因此,您可以尝试将其传递给解压缩算法并查看它是否解压缩,然后尝试查看其中的正确 xml 文件并检查人们希望在文档中找到的字段。

    【讨论】:

      【解决方案2】:

      你可以试试:

      $type = `file -bi $UploadedFilePath`;
      

      这将启动 linux file 程序,该程序将查看文件内容并检测它是哪种文件类型。

      它适用于许多文件类型(我们在生产代码中使用它来检测上传的文件),但不确定是否适用于 Microsoft Word 文档版本。

      【讨论】:

        【解决方案3】:

        如果您使用的不是 PHP 5.3,mime_content_type 函数可能会让您感兴趣。

        如果您使用的是 PHP 5.3 和/或可以安装 PECL 扩展,那么新的 Fileinfo 库应该可以胜任;有关更多信息,请参阅finfo_file
        在给定的示例中,已识别的 mime 类型之一是 "application/vnd.ms-excel" ;所以,运气好的话,它应该也可以处理 MS Word 文件;-)

        【讨论】:

          【解决方案4】:

          对于 Microsoft .doc 文件,您可以检查文件的前几个字节中的幻数:

          D0 CF 11 E0 A1 B1 1A E1

          和字节偏移 512 处的“子标题”。

          【讨论】:

            猜你喜欢
            • 2015-02-25
            • 1970-01-01
            • 2010-12-27
            • 2014-06-30
            • 2011-05-15
            • 2012-10-30
            • 2015-06-25
            • 2011-04-01
            相关资源
            最近更新 更多