Hallo,
Ich nutze folgendes Skript für den Download von JPEG-Bilddateien (und anderen Dateien):
PHP-Code:
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false); // required for certain browsers
header("Content-type: ".$mime_type.";");
header("Content-Disposition: attachment; filename=$output_filename");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file).";");
readfile($file);
Nun funktioniert das Skript schon (fast) ganz gut. Nur beim Download der JPEGs gibt es ein Problem.
Prinzipiell sind die JPEGs erst nach einem 2. Download mit Programmen wie Vorschau (MacOS X), Safari, Firefox, Chrom lesbar.
Richtige Graphikprogramme scheinen aber kein Problem mit den "defekten" Dateien zu haben.
Beim Vergleich des 1. und 2. Download konnte ich aber feststellen, dass die fehlerhafte Datei scheinbar nicht vollständige Exif-Informationen enthält:
1. Download: Code:
---- ExifTool ----
ExifTool-Version : 8.28
Fehler : File format error
---- System ----
Dateiname : bild.jpg
Verzeichnis : /Users/me/Desktop
Dateigröße : 2.4 MB
Datum/Uhrzeit der Dateiänderung : 2011:06:08 22:58:53+02:00
Dateiberechtigungen : rw-r--r--
***ende***
2. Download Code:
---- ExifTool ----
ExifTool-Version : 8.28
Warnung : IFD1 pointer references previous InteropIFD directory
---- System ----
Dateiname : bild.jpg
Verzeichnis : /Users/me/Desktop
Dateigröße : 2.4 MB
Datum/Uhrzeit der Dateiänderung : 2011:06:08 22:59:06+02:00
Dateiberechtigungen : rw-r--r--
---- File ----
Dateityp : JPEG
MIME-Typ : image/jpeg
Exif Byte-Reihenfolge : Big-endian (Motorola, MM)
***u.s.w.***
Den 2. Download kann ich auch mit einem anderen Browser starten. Die Datei ist auch dann lesbar.
Es scheint, als ob die Datei beim ersten Ansatz vor dem Download von Server unvollständig gelesen wird, danach aber im Cache ordentlich zur Verfügung steht... Aber das ist nur eine Idee.
Hat jemand eine Idee, wie ich das Problem lösen kann?
Danke
Flözen