Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/268.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MSOffice2007文件的PHP 5.3.5 fileinfo()MIME类型-magic.MIME更新?_Php_Mime Types_Detection - Fatal编程技术网

MSOffice2007文件的PHP 5.3.5 fileinfo()MIME类型-magic.MIME更新?

MSOffice2007文件的PHP 5.3.5 fileinfo()MIME类型-magic.MIME更新?,php,mime-types,detection,Php,Mime Types,Detection,在PHP上传中,我试图验证上传文件的MIME类型,以匹配应用程序的有效MIME类型集。尝试使用fileinfo()确定Office 2007文件的MIME类型时,它没有检测到相应的MIME类型。相反,MIME类型的响应是“application/zip” 办公室文档MIME类型: PHP代码示例: $oFileInfo=新的finfo(FILEINFO\u MIME\u类型) $sMimeType=$oFileInfo->file($\u FILES['Filedata']['tmp\u na

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

办公室文档MIME类型:

PHP代码示例:

$oFileInfo=新的finfo(FILEINFO\u MIME\u类型)

$sMimeType=$oFileInfo->file($\u FILES['Filedata']['tmp\u name'])

echo$sMimeType

服务器设置信息:

  • 操作系统:Windows Server 2003 32位
  • Web服务器: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
    • 大小:517KB
    • 来源:Source Forge:GNU32-FileType gnuwin32.sourceforge.net/packages/FileType.htm
我发现很多帖子都提到了从Web服务器下载时新Office格式的问题。在所有这些示例中,我没有找到任何地方可以说明如何将新的MIME类型添加到现有的magic.MIME文件中,或者找到指向已经包含MicrosoftOffice2007+MIME类型的magic.MIME文件的链接。谢谢你的帮助

  • 是的,您应该更新
    magic.mime
  • 不相信从浏览器发送的mime类型(
    $\u文件['Filedata']['type']
  • 为什么要使用手册上说已弃用的功能 注意:通过文件的魔法字节确定文件的MIME类型;考虑到Office 2007文件(以及许多其他文件格式,例如ePUB)只是具有指定目录结构的zip包,因此使用
    finfo()
    返回
    application/zip
    是合理的


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

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

  • 进入Internet管理管理单元
  • 右键单击“网站”并选择“属性”
  • 选择“HTTP头”
  • 选择“Mime类型”
  • 输入不带前导句点的新扩展名和适当的mime类型。根据需要为每个扩展重复此操作
  • 单击“确定”关闭所有对话框

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

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

  • 是的,您应该更新magic.mime
  • 哈哈,是的,只要更新一下,问题就解决了。 不幸的是,看起来神奇的mime类型系统无法查看实际的文件内容,而且由于文件已压缩,因此无法解压缩(查看哪个文件?)


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

    抱歉,这不是web服务器的问题。问题是验证上载的实际文件的MIME是否有效。是的,但php可能正在使用webserver MIME表来标识文件MIME类型。如果php Fileinfo finfo()使用的不是安装要使用的magic.MIME文件,我会非常惊讶。但是,在使用.docx和.xlsx MIME类型在IIS上添加MIME类型进行测试后,情况保持不变。使用“new finfo(FILEINFO_MIME_TYPE);”当前(未弃用的manor)是否正确?据我所知,mime_content_type()函数实际上是不推荐使用的。问题当然是,如何更新magic.mime文件,有什么线索吗?jmz,是的,我知道它们是ZIP存档。但是,对于office 2007+文件,在filext.com/faq/office_MIME_types.php上可以找到MIME类型。我非常确定我需要一个更新的magic.mime文件来检测这些。如果找不到更新的magic.mime,则可以将实际的magic.mime行添加到各种Office 2007+扩展名的现有magic.mime文件中。有些信息告诉我magic.mime文件的语法和方法不为许多人所知,因为似乎没有人知道该解决方案。我发现了很多帖子,人们说不要弄乱你的magic.mime文件,以免弄坏它。遗憾的是,他们都没有指出一个地方来了解文件的工作原理。在这里,我认为微软正在整理东西以提高安全性。:-)