PHP 5.3.5 fileinfo()MS Office 2007文件的MIME类型

在PHP上传中,我试图验证正在上传的文件的MIME类型,以匹配该应用程序的一组有效的MIME类型。 当试图使用fileinfo()来确定Office 2007文件的MIME类型时,它不会将其检测为适当的MIME类型。 相反,MIME类型的响应是“应用程序/邮编”

Office文档MIME类型: http : //filext.com/faq/office_mime_types.php

PHP代码示例:

$ oFileInfo =新的finfo(FILEINFO_MIME_TYPE);

$ sMimeType = $ oFileInfo - > file($ _FILES ['Filedata'] ['tmp_name']);

echo $ sMimeType;

服务器设置信息:

  • 操作系统:Windows Server 2003 32位
  • 网络服务器:IIS 6.0
  • PHP:5.3.5(线程安全)使用FastCGI 1.5
  • 文件:magic.mime
  • 在uvcms doto的darko示例16-Apr-2008 09:35
  • 链接:php.net/manual/en/fileinfo.installation.php
  • 大小:517 KB
  • 来源:Source Forge:GNU32 - FileType gnuwin32.sourceforge.net/packages/filetype.htm
  • 从web服务器下载时,我发现了许多涉及新版Office格式问题的帖子。 在所有这些示例中,我没有找到任何说明将新MIME类型添加到现有magic.mime文件的庄园,或者指向已包含Microsoft Office 2007+ MIME类型的magic.mime文件的链接。 感谢你的协助。


    较新的Office文件实际上是ZIP档案。 这就是为什么MIME Magic数据库将它们检测为ZIP文件的原因。 您可能需要根据文件扩展名添加特殊规则,或者查看ZIP文件以查看它是否具有docProps文件夹(Office ZIP归档文件具有包含有关文档元数据的文件夹)。

    还有其他文件格式,实际上是带有不同扩展名的ZIP存档文件,例如JAR文件。


  • 是的,你应该更新magic.mime。
  • 哈哈,是的,只是更新它,问题解决了。 不幸的是,它看起来像魔幻类型系统的实际文件内容,并且由于文件被压缩,它不能解压缩(并查看哪个文件?)

    有人建议编写一个函数来解压缩压缩文件,然后检查是否存在“DocProps”目录。 但是这会给生产服务器引入另一种攻击向量。


    您是否尝试将新的MIME类型添加到IIS?

  • 进入Internet Management管理单元
  • 右键单击“网站”并选择“属性”
  • 选择“HTTP标题”
  • 选择“MIME类型”
  • 输入一个没有前导期的新扩展名和适当的MIME类型。 根据需要为每个分机重复。
  • 点击“确定”关闭所有对话框
  • 链接地址: http://www.djcxy.com/p/45507.html

    上一篇: PHP 5.3.5 fileinfo() MIME Type for MS Office 2007 files

    下一篇: DOCX File type in PHP finfo