簡體   English   中英

上載ZIP文件的MIME類型錯誤

[英]Wrong MIME-Type for uploaded ZIP files

如何在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

在兩種環境中,使用Apache的Linux和使用PHP內置Web服務器的Windows。

閱讀此答案后,我還認為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中的類型索引在Linux環境中返回了application / vnd.zend.serverconfig,而在Windows中則不太理想,盡管有效,但application / octet流

為什么會這樣?

值得一提的是,我是Linux環境的新手,所以我不知道如何設置Web服務器,因此,起初我安裝了Zend Server,但后來我完全卸載了它,並使用apt-get手動重新安裝了所有內容。

了解類型索引是由瀏覽器而不是PHP提供的后,我在Google Chrome中進行了測試,並獲得了正確的應用程序/ zip

因此,我用Google解決了在以前測試過的Firefox瀏覽器中的問題,而我要做的就是刪除〜/ .mozilla / firefox /中的配置文件文件夾中的mimeTypes.rdf文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM