⑴ PHP多文件打包下載,但是下載的zip文件為0KB,這是什麼原因
1、先看是否壓縮成功;
2、如果使用程序壓縮,查下是否程序問題。
⑵ php如何一次下載多個文件
這個要利用javascript技巧才行,單獨的PHP是無法實現的,經過我的測試,下面的代碼可以實現同時下載多版個文件權:
<script language=javascript>
var urls=new Array('result.xls','201110x.rar','a.exe');
for (i in urls) document.write('<a id="d'+i+'" href="'+urls[i]+'" target=_blank>x</a>');
for (i in urls) document.getElementById('d'+i).click();
</script>
你PHP程序輸出這樣的代碼就可以,主要是用for循環生成第二行urls數組的定義。
⑶ PHP網頁上打包文件生成壓縮文件zip,並彈出下載
既然你只是想學習如何打包.
那我重點就回答你這一塊,正好我剛剛用到;
$filename="./".date('YmdH').".zip";//最終生成的文件名(含路徑)
//生成文件
$zip=newZipArchive();//使用本類,linux需開啟zlib,windows需取消php_zip.dll前的注釋
if($zip->open($filename,ZIPARCHIVE::CREATE)!==TRUE){
exit('無法打開文件,或者文件創建失敗');
}
//$fileNameArr就是一個存儲文件路徑的數組比如array('/a/1.jpg,/a/2.jpg....');
foreach($fileNameArras$val){
$zip->addFile($val,basename($val));//第二個參數是放在壓縮包中的文件名稱,如果文件可能會有重復,就需要注意一下
}
$zip->close();//關閉
//下面是輸出下載;
header("Cache-Control:max-age=0");
header("Content-Description:FileTransfer");
header('Content-disposition:attachment;filename='.basename($filename));//文件名
header("Content-Type:application/zip");//zip格式的
header("Content-Transfer-Encoding:binary");//告訴瀏覽器,這是二進制文件
header('Content-Length:'.filesize($filename));//告訴瀏覽器,文件大小
@readfile($filename);//輸出文件;