MS Office 2007 文件的 PHP 5.3.5 fileinfo() MIME 类型 - magic.mime 更新?

Ara*_*nid 5 php detection mime-types

在 PHP 上传中,我尝试验证正在上传的文件的 MIME 类型,以匹配应用程序的一组有效的 MIME 类型。当尝试使用 fileinfo() 确定 Office 2007 文件的 MIME 类型时,它没有检测到相应的 MIME 类型。相反,MIME 类型响应是“application/zip”

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

PHP 代码示例:

$oFileInfo = 新的 finfo( FILEINFO_MIME_TYPE );

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

回声 $sMimeType;

服务器设置信息:

  • 操作系统:Windows Server 2003 32位
  • 网络服务器:IIS 6.0
  • PHP:5.3.5(线程安全)使用 FastCGI 1.5
  • 文件:magic.mime
    • 示例:darko 在 uvcms dot com 2008 年 4 月 16 日 09:35
      • 链接:php.net/manual/en/fileinfo.installation.php
    • 大小:517 KB
    • 来源:Source Forge:GNU32 - FileType gnuwin32.sourceforge.net/packages/filetype.htm

我发现许多帖子都提到从网络服务器下载较新的 Office 格式时出现的问题。在所有这些示例中,我没有找到任何地方说明如何将新的 MIME 类型添加到现有的 magic.mime 文件,或者指向已包含 Microsoft Office 2007+ MIME 类型的 magic.mime 文件的链接。感谢你的协助。

tim*_*eam 0

  1. 是的,你应该更新magic.mime
  2. 竖起大拇指表示不相信浏览器发送的 mime 类型 ( $_FILES['Filedata']['type'])
  3. 为什么你要使用手册上说已弃用的功能?http://php.net/manual/en/function.mime-content-type.php

注意: finfo()通过文件的幻字节来确定文件的 MIME 类型;鉴于 Office 2007 文件(以及许多其他文件格式,例如 ePUB)只是具有指定目录结构的 zip 包,因此必须finfo()返回application/zip.

如果您确实想根据文件内容确定文件类型(而不是上传时的 MIME 类型浏览器报告),我建议您解压缩或列出内容以检查其结构