上传文件中的 Mime 类型错误

Posted

技术标签:

【中文标题】上传文件中的 Mime 类型错误【英文标题】:Wrong Mime-type in uploaded file 【发布时间】:2012-02-05 05:28:12 【问题描述】:

我的网站上有文件上传表格,我检查上传文件的 mime 类型以允许或拒绝上传。在我将 Firefox 升级到 3.6.11(在 ubuntu 中)之前,它运行良好。但现在无法上传 Doc 文件。我检查了文件的 mime 类型,但它是 'application/x-php' 而不是 'application/vnd.ms-word' 或其他 msword mime-types。

我用

echo $_FILES[$fileName]['type'];

查看 mime 类型。我从 firefox 8 和 firefox 3.6 上传了相同的文件,上面代码的输出是:

FireFox 8: application/vnd.ms-word
FireFox 3.6: application/x-php

是firefox的bug还是我要改代码?

我使用 PHP。

【问题讨论】:

如何检查 MIME 类型? 我写了一个函数,但是为了调试我只是回显 $_FILES[$fileName]['type'] 【参考方案1】:

$_FILES[...]['type'] 只是任意的、用户提供的、最佳猜测的、不可靠的(如您所见)客户端提供的信息,可能与实际文件有任何关系,也可能没有任何关系。 永远不要使用它。

尝试自己在服务器上检测 MIME 类型。例如技术,请参阅How to get the content-type of a file in PHP?。

【讨论】:

哦,是的,我上传了一个错误命名为 *.jpg 的 PNG 文件,而 $_FILES[...]['type'] 错误地报告了 image/jpeg

以上是关于上传文件中的 Mime 类型错误的主要内容,如果未能解决你的问题,请参考以下文章

在 DRUPAL 中验证 PDF 文件上传中的 MIME 类型

ci 文件类型在禁止上传之列

PHP 上传 MIME 类型限制

PHP处理上传文件信息数组中的文件类型 正确获取

在 Ruby 中检测上传文件的 MIME 类型

如何更改文件 mime 类型以绕过 php shell 上传? [关闭]