上传的ZIP文件的MIME类型错误

时间:2014-11-07 12:59:15

标签: php linux windows zip mime

如何在Linux和Windows环境中处理上传的ZIP文件的MIME类型验证?

我创建了一个测试目的ZIP文件并下载了另一个(第一个Google结果),并将它们用作以下代码的参数:

$finfo = new finfo( FILEINFO_MIME );

echo $finfo -> file( 'benchmark.zip' ), '<br />', $finfo -> file( 'css3menu.zip' ), '<br />';

echo mime_content_type( 'benchmark.zip' ), '<br />', mime_content_type( 'css3menu.zip' );

它报告了我:

application/zip; charset=binary
application/zip; charset=binary
application/zip
application/zip

在两种环境中,Linux,使用Apache和Windows,使用PHP内置的webserver。

阅读this answer后,我还认为 application / octet-stream 有效,所以我将它们都添加到了我的上传处理程序。

但上传失败,报告我文件类型无效:(

我检查了所有内容并且它是正确的,所以我决定用最基本的上传实现(连同调试代码)来解决问题:

if( isset( $_POST['button'] ) ) {

    print '<pre>'; print_r( $_FILES );

    $finfo = new finfo( FILEINFO_MIME );

    echo $finfo -> file( 'benchmark.zip' ), '<br />', $finfo -> file( 'css3menu.zip' ), '<br />';

    echo mime_content_type( 'benchmark.zip' ), '<br />', mime_content_type( 'css3menu.zip' ), '<br />';
}

?>

<form enctype="multipart/form-data" action="http://localhost/test.php" method="post">

<input type="file" name="file[]" id="file" />

<input type="submit" name="button" value="Send" />

</form>

FileInfo和mime_content_type()报告的MIME类型与之前相同,但$ _FILES中的类型索引返回 application / vnd.zend.serverconfig Linux环境和Windows中不太理想但有效的应用程序/八位字节流

有关为何发生这种情况的任何想法?

值得一提的是我在Linux环境中的新手,所以我不知道如何设置网络服务器,所以,首先,我安装了Zend Server但后来我完全卸载了它并重新安装了所有内容手动使用apt-get。

1 个答案:

答案 0 :(得分:0)

了解类型索引是由浏览器提供的,而不是我在Google Chrome中测试过的PHP并获得了正确的 application / zip

所以我谷歌如何在我之前测试的浏览器Firefox中修复此问题,我需要做的就是删除位于配置文件夹中的 mimeTypes.rdf 文件在〜/ .mozilla / firefox /