2012-04-03 3 views
2

Während des Hochladens der Datei bekomme ich MIME-Type als application/octet-stream.Getting Upload Image MIME-Typ ist application/octet-stream

Ich bin gekommen, zu wissen, dass Zend_Frameworks versucht, den MIME-Typen auf zwei Arten zu bestimmen:

Zuerst es versucht, die PECL FILEINFO-Erweiterung zu verwenden (die auf jedem Server installiert ist) , wenn die Erweiterung nicht ist Es ist versucht, mime_content_type (eine PHP-Funktion) zu verwenden. Diese Funktion ist jedoch seit php Version 5.3 veraltet.

Also, was jetzt zu tun? Wie kann ich sicher sein, dass Benutzer, die eine Datei hochladen, nur Bild und nicht etwas anderes sind? Wie kann ich den MIME-Typ der hochgeladenen Datei erkennen?

Antwort

1

Für Bilder können Sie sich auch auf exif_imagetype verlassen, aber ich würde empfehlen, dass Sie finfo installieren.

Siehe this für eine Beispielimplementierung.

0

Verwenden Zend_File_Transfer validators exlude-Typen, die Sie nicht wollen:

$upload = new Zend_File_Transfer(); 

    // Does not allow MIME type application/pdf and application/zip . 
    $upload->addValidator('ExcludeMimeType', false, array('application/pdf', 
                'application/zip')); 

oder Sie können auch IsImage Validator, der prüft, verwendet werden, wenn eine übertragene Datei eine Bilddatei ist:

$upload = new Zend_File_Transfer(); 

// Checks whether the uploaded file is a image file 
$upload->addValidator('IsImage', false); 
+0

-1, MIME-Typ ist nicht dasselbe wie Dateiendung. –

+0

ich meinte stattdessen ExcludeMimeType. –

+0

Hat meine Stimme angenommen, der 'ExcludeMimeType'-Ansatz basiert wahrscheinlich auf 'finfo' und' mime_content_type', also sollte es nicht funktionieren. Der 'IsImage'-Validator sollte. –

Verwandte Themen