⑴ 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);//输出文件;