2009-05-13 6 views
17

Ich entdeckte ein seltsames Problem in Zip-Datei Mime-Typ, wenn ich an a Symfony application arbeitete.Mime-Typ für Zip-Datei in Google Chrome

Laut w3school ist der MIME-Typ für ZIP-Datei application/zip. Das glaube ich auch.

Aber wenn ich eine Zip-Datei in meine Symfony App mit IE hochlade, ist der MIME-Typ dieser Zip-Datei application/x-zip-compressed. Wenn ich eine Zip-Datei in Firefox hochlade, ist der MIME-Typ dieser Zip-Datei application/octet-stream.

Keine von ihnen ist application/zip wie ich gerne glauben würde.

Das seltsamste Verhalten von allen, ist Google Chrome. Wenn ich eine Zip-Datei in Google Chrome hochlade, kann ich den richtigen Mime-Typ dafür nicht ermitteln. Obwohl ich am ziemlich sicher, dass es nicht

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

Der Mime-Typ für Zip-Datei in Google Chrome ist ein leerer String, als kehrte ich das sfValidatorFile Objekt durch das Dumping aus herausgefunden. Beachten Sie, dass die sfValidatorFile.type "" für Zip-Datei ist. Das sfValidatorFile.type Objekt, das für eine JPEG-Datei zurückgegeben wird, ist jpeg.

mir scheint, als gäbe es einen Fehler in entweder Symfony oder Google Chrome ist

Weitere info: Es scheint, dass Google Mail-Mime-Typ der Zip-Datei als application/zip in Google Chrome interpretiert. Das ist das richtige Verhalten. Scheint zu bestätigen, dass es Symfonys Fehler ist.

+0

Können Sie irgendwo einen Haltepunkt setzen und den Mimetyp aus der Anfrage lesen? –

+0

Das wäre eine gute Idee – Graviton

Antwort

24

Ab sofort MIME-Typ einer Zip-Datei ist application/octet-stream in Google Chrome. :)

+0

können wir den MIME-Typ von Octet-Stream zu Zip ändern ..? Gibt es eine Einstellung in Chrom oder Code in der Anwendung, die wir verwenden können ..? – Praditha

+1

Es scheint, dass es vom Betriebssystem abhängt, Chrom auf Mac Anwendungen/zip zurückgibt, Win7 Anwendung/Oktett-Stream und Win8 Anwendung/X-Zip-komprimiert – sstauross

+0

Chrome 51.0.2704.103 auf meinem Windows 10 Laptop gibt leere Zeichenfolge wieder. .... – Arthur

0

Scheint mir so, als gäbe es einen Fehler in Symfony.

Ein Ticket wurde unter here geöffnet.

3

Dies ist der Bug von Google Chrome nicht Symfony. Ich habe das gleiche Problem mit Google Chrome ZIP Mime.

Ich habe meine eigene Anwendung in PHP geschrieben.

Wenn Sie echo $_FILES['yournameattr']['type']; schreiben, wird beim Laden einer ZIP-Datei eine leere Zeichenfolge zurückgegeben, beim Hochladen einer gif- oder jpeg-Datei wird jedoch image/jpeg oder image/gif zurückgegeben.

Ich habe Google Chrome Version 3.0.195.6 (Beta).

Wenn Sie jedoch eine schnelle Lösung benötigen, können Sie preg_match verwenden, um die Dateierweiterung zu überprüfen (zip oder nicht).

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

Sie haben das Problem bei Google Chrome gemeldet? – Graviton

+0

Das Namensfeld im Dateiarray wird vom Client übergeben und ist nur gültig, wenn der Client Ihnen eine Datei mit der korrekten Erweiterung gesendet hat. Mit anderen Worten, es ist nicht vertrauenswürdig. – Matthew