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

标签 php mime-types detection

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

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

示例 PHP 代码:

$oFileInfo = new 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
    • darko 在 uvcms.com 上的示例 2008 年 4 月 16 日 09:35
      • 链接:php.net/manual/en/fileinfo.installation.php
    • 大小:517 KB
    • 来源:Source Forge:GNU32 - 文件类型 gnuwin32.sourceforge.net/packages/filetype.htm

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

最佳答案

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

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

关于PHP 5.3.5 fileinfo() MS Office 2007 文件的 MIME 类型 - magic.mime 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4807036/

相关文章:

php - 是我做错了什么还是 php 不支持这个?

opencv - 为什么 HoughCircles 在尝试检测虹膜时返回 0 个圆圈?

3d - 太空中两个 3D 圆盘之间的碰撞检测

json - Next.js API Route 神秘修改 JSON payload

android - 注册 Android 应用程序以接收某些文件类型

c++ - 无法使用 Boost GIL 检测图像文件类型(未捕获异常)

php - 为什么文件只能部分上传?

PHP 用户代理确定手机和平板电脑

php - 表单中的选项值以在数据库中搜索两个值

linux - 获取打开特定文件的应用程序列表