2009-05-13 74 views
17

a Symfony applicationで作業したときに、zipファイルのMIMEタイプに奇妙な問題が発見されました。Google ChromeのZipファイルのMimeタイプ

w3schoolによれば、zipファイルのMIMEタイプはapplication/zipです。これも私が信じていることです。

しかし、IEでsymfonyアプリケーションにzipファイルをアップロードすると、そのzipファイルのMIMEタイプはapplication/x-zip-compressedになります。 Firefoxでzipファイルをアップロードすると、そのzipファイルのMIMEタイプはapplication/octet-streamになります。

いずれもapplication/zipで、私は信じたいと思っています。

すべての奇妙な動作は、Google Chromeです。 Google Chromeでzipファイルをアップロードするときに、正しいMIMEタイプを判別できません。私はそれがGoogle Chromeでのzipファイルのない

application/zip 
application/x-zip 
application/octet-stream 
application/x-zip-compressed 

MIMEタイプだとはかなり確信しているが、私はsfValidatorFileオブジェクトが返さうち投棄によって見られるように、空の文字列です。 sfValidatorFile.typeはzipファイルの ""であることに注意してください。

しかし、sfValidatorFile.typeのオブジェクトは、jpegファイルのために返されますjpegです。

はsymfonyのか、Google Chromeのどちらかにバグがあるように私には思える

Futher情報:これは、GmailはGoogleのChromeのアプリケーション/ジップとしてzipファイルのMIMEタイプを解釈しているようです。これは正しい動作です。 Symfonyのバグであることを確認しているようだ。

+0

どこかでブレークポイントを設定し、リクエストからmimetypeを読み取ることはできますか? –

+0

これはいい考えです – Graviton

答えて

24

、zipファイルのMIMEタイプには、Google Chromeでアプリケーション/ octet-streamとです。 :)

+0

MIMEタイプをoctet-streamからzipに変更できますか?私たちが使用できるアプリケーション内のクロムまたはコードの設定はありますか? – Praditha

+1

OSに依存しているようですが、Macのクロムはwin7アプリケーション/オクテットストリームとwin8アプリケーション/ x-zip圧縮で – sstauross

+0

のChrome 51.0.2704.103をWindowsのノートパソコンの空の文字列に戻します。 .... – Arthur

0

Symfonyにバグがあるようです。

チケットはhereで開封されています。

3

これはGoogle Chromeのバグで、Symfonyではありません。私はGoogle ChromeのZIP MIMEにも同じ問題があります。

私は自分のアプリケーションをphpで書いてあります。

echo $_FILES['yournameattr']['type'];と書くと、zipファイルをアップロードすると空の文字列が返されますが、gifまたはjpegファイルをアップロードするとimage/jpegまたはimage/gifが返されます。

Google Chromeバージョン3.0.195.6(ベータ版)です。

高速な解決策が必要な場合は、preg_matchを使用してファイルの拡張子を確認することができます(zipかどうか)。今のよう

if (preg_match('/(.*)\.zip/',$_FILES['yournameattr']['name'])) {echo 'This is zip.';} 
+1

あなたはGoogle Chromeに問題を報告しましたか? – Graviton

+0

ファイル配列のnameフィールドはクライアントによって渡され、クライアントが正しい拡張子を持つファイルを送った範囲でのみ有効です。言い換えれば、それは信頼できるものではありません。 – Matthew