首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP5.3.5fileinfo() MIME类型用于MIME 2007文件- magic.mime更新?

PHP5.3.5fileinfo() MIME类型用于MIME 2007文件- magic.mime更新?
EN

Stack Overflow用户
提问于 2011-01-26 16:26:27
回答 4查看 5.4K关注 0票数 5

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

Office文档MIME类型: types.php

示例PHP代码:

$oFileInfo =新的finfo( FILEINFO_MIME_TYPE ); $sMimeType = $oFileInfo ->文件($_->‘’Filedata‘); 回声$sMimeType;

服务器安装信息:

  • 操作系统: Windows 2003 32位
  • IIS服务器:IIS 6.0
  • PHP: 5.3.5 (线程安全)使用FastCGI 1.5
  • 档案: magic.mime
    • 以达科为例,网址为uvcms com 16-20084.09-35
      • 链接:php.net/手册/en/fileinfo.installation.php

代码语言:javascript
复制
- Size: 517 KB
- Source: Source Forge: GNU32 - FileType gnuwin32.sourceforge.net/packages/filetype.htm

我已经找到了许多文章,这些文章提到了在从when服务器下载时使用更新的Office格式的问题。在所有这些示例中,我没有发现任何地方可以说明将新的MIME类型添加到现有的magic.mime文件,或者指向已经包含Microsoft类型的magic.mime文件的链接。谢谢你的帮助。

EN

回答 4

Stack Overflow用户

发布于 2011-01-26 17:49:57

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

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

票数 1
EN

Stack Overflow用户

发布于 2011-05-26 20:08:06

  1. 是的,你应该更新magic.mime。

哈哈,是的,更新一下,问题解决了。不幸的是,看起来神奇的mime类型系统不需要查看实际的文件内容,而且由于文件是压缩的,所以无法解压缩(查看哪个文件?)

例如,有人建议编写一个函数来解压缩文件,然后检查是否存在"DocProps“目录。但这将给生产服务器带来另一个攻击矢量。

票数 1
EN

Stack Overflow用户

发布于 2011-01-26 16:38:09

  1. 是的,你应该更新magic.mime
  2. 不要相信浏览器发送的mime类型($_FILES['Filedata']['type'])
  3. 为什么要使用手册上说不推荐的函数?http://php.net/manual/en/function.mime-content-type.php

注意: finfo()根据文件的神奇字节来确定文件的MIME类型;鉴于Office2007文件(以及许多其他文件格式,例如ePUB)只是简单地压缩具有指定目录结构的包,所以让finfo()返回application/zip是合理的。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4807036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档