2016-08-24 1 views
0

Ich versuche, eine ZIP-Datei mit PHP herunterzuladen. Download funktioniert gut, aber wenn in extrahieren zip es ungültige Datei sagen. Bitte helfen Sie mir und überprüfen Sie mein Code unten:Wie behebe ich 'ungültige Datei' Fehler nach dem Herunterladen von ZIP-Datei mit PHP?

apache_setenv('no-gzip', 1); 
ini_set('zlib.output_compression', 0); 

$filename = "sliced Images.zip";  
$upload_dir = wp_upload_dir(); 

$filepath = $upload_dir['basedir']; 
//echo $filepath.'/'.$filename; 
//echo filesize($filepath.'/'.$filename); 
//die; 

// http headers for zip downloads 
ob_start(); 
header("Pragma: public"); 
header("Expires: 0"); 
header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); 
header("Cache-Control: public"); 
header("Content-Description: File Transfer"); 
header("Content-Type: application/zip"); 
header("Content-Transfer-Encoding: Binary"); 

header("Content-Disposition: attachment; filename=\"".$filename."\""); 

header("Content-Length: ".filesize($filepath.'/'.$filename)); 
ob_end_flush(); 
@readfile($filepath.'/'.$filename); 

enter image description here

+0

(1) Warum Sie Warnungen werden unterdrückt wird in 'readfile' und (2) Sie sollten nichts anderes in die Ausgabe schreiben, wenn das Skript fertig ist. Lass es einfach enden. Wenn Sie 'exit' verwenden wollen, verwenden Sie es ohne Parameter. – apokryfos

+0

Ist die Datei 0 beim Herunterladen geladen? Erhalten Sie irgendwelche Fehler/Warnungen, wenn Sie den '@' Fehlerunterdrücker entfernen? –

+0

Funktioniert immer noch nicht nach dem Beenden des Exits. – Addy

Antwort

1

obige Problem durch die Verwendung Code unten gelöst:

header('Content-Description: File Transfer'); 
header("Content-Type: application/zip"); 
header('Content-Disposition: attachment; filename="'.basename($pdf_path).'"'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate'); 
header('Pragma: public'); 
header('Content-Length: ' . filesize($pdf_path)); 
ob_clean(); 
readfile($pdf_path);