2016-08-24 10 views
0

私は、PHPを使用してzipファイルをダウンロードしようとしています。ダウンロードはうまく動作しますが、解凍時に無効なファイルと表示されます。私を助けて、私の次のコードを確認してください:問題の上にphpを使ってzipファイルをダウンロードした後、「無効なファイル」エラーを修正するには?

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)なぜあなたは 'readfile'と(に警告を抑制しています2)スクリプトが完了したら、出力に何も書き込まないでください。ただ終了させて​​ください。 'exit'を使用する場合は、パラメータなしでそれを使用してください。 – apokryfos

+0

ダウンロード時にファイルの長さは0ですか? '@'エラーサプレッサーを削除するとエラー/警告が出ますか? –

+0

exitを削除してもまだ動作しません。 – Addy

答えて

1

は、コードの下に使用することによって解決される:

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); 
関連する問題