ZIP-Archiv gesendet von PHP ist beschädigt

Ich bin php ZipArchive erstellen Sie eine zip-Datei on-the-fly und senden Sie es zurück an den Benutzer. Ich vorübergehend speichern Sie die Zip-Datei in einen Ordner oberhalb von document-root und dann schicken Sie es zurück mit dem code

header('Content-type:application/zip');
header('Content-Disposition: inline; filename="'.("file.zip").'"');
header("Content-Transfer-Encoding: binary");
header("Content-Length:".filesize($file));
$fh = fopen($file,'rb');
fpassthru($fh);

nachdem Sie zuvor ausgestellt, ein

$zip->close()

um sicherzustellen, dass die Datei nicht geöffnet. Die Frage, die ich habe, laufen in dieser - die gespeicherte zip-Datei ist ein gültiges Archiv, die ich öffnen kann in Windows 7, 7Zip, WinZIP etc. Allerdings, wenn ich senden Sie die Datei mit obigen code, es endet mit einem 0xD 0xA-pair-Mädchen an den Beginn der Datei, das ist genug zu machen, es ist beschädigt. Ich kann nicht herausfinden, wo diese Zeichen herkommen. Ist das ein bekannter Fehler mit fopen/fpassthru? Jede Hilfe wäre sehr geschätzt werden.

  • Tipp: es gibt readfile, um die Ausgabe-Datei direkt...
  • Wirkt sich das hinzufügen einer fclose($fh); exit(); am Ende helfen?
  • Auch Sie sind sicher es gibt keinen anderen Ausgang? Eine Stückliste der PHP-Datei selbst? Alle whitespace-Zeichen?
  • Sie kam sehr nahe Deceze - siehe mein Kommentar unten. Wenn Sie hatte geantwortet statt kommentiert, vielleicht habe ich auch akzeptiert die Antwort. Ich hätte nicht gedacht, dass eine zusätzliche Zeile nach einer Kündigung ?> in einer gewünschten Skript würde dazu führen, so viel Mühe.
InformationsquelleAutor DroidOS | 2012-11-23
Schreibe einen Kommentar