Symfonyアプリケーション で作業しているときに、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タイプを判別できません。私amがではない
application/Zip
application/x-Zip
application/octet-stream
application/x-Zip-compressed
GoogleでのZipファイルのMIMEタイプChromeは、返されたsfValidatorFile
オブジェクトをダンプして見つけたので、空の文字列です。sfValidatorFile.type
はZipファイルの「」です。
しかし sfValidatorFile.type
jpegファイルに対して返されるオブジェクトはjpeg
です。
SymfonyまたはGoogle Chromeのいずれかにバグがあるように思えます
詳細情報:Gmailは、ZipファイルのMIMEタイプをGoogle Chromeのアプリケーション/ Zipとして解釈するようです。これは正しい動作です。 Symfonyのバグであることを確認しているようです。
現在、ZipファイルのMIMEタイプは、Google Chromeではapplication/octet-streamです。 :)
これはSymfonyではなくGoogle Chromeのバグです。 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.';}
Symfonyにバグがあるように思えます。
ここ でチケットが開かれました。