您的位置:首页 > 编程语言 > PHP开发

PHP打包下载多个TXT文件

2016-10-31 00:00 316 查看
前端用js获取页面选中的checkbox框,把ID写成字符串传递给PHP,PHP利用explode函数转成数组;已知文件路径

<script type="text/javascript">
$(function(){
$("#download").click(function(){
//window.location.href="downzip.php?articleid=1&chapterids=1";
var articleid = $('#articleid').val();
var chapterids="";
$('input:checked').each(function(){
chapterids += $(this).attr('value')+',';
});
if(chapterids==""){
alert("请选择要下载的章节");
return false;
}

window.location.href="chapterdownload.php?articleid="+articleid+"&chapterids="+chapterids;
});
});

</script>

PHP代码:

$articleid = intval($_GET['articleid']);
$chapters = strval($_GET['chapterids']);
$chapterids = explode(',', $chapters);
for ($i=0;$i<sizeof($chapterids)-1;$i++){
$url = $_SERVER["DOCUMENT_ROOT"]."/files/article/txt/0/$articleid/$chapterids[$i].txt";
$datalist[$i] = $url;//获取文件路径数组

}
$datastr=date("d-H-i-s");
$filename = $_SERVER["DOCUMENT_ROOT"]."/files/article/downZip/".$datastr.".zip"; //最终生成的文件名(含路径)
if(!file_exists($filename)){
//重新生成文件
$zip = new ZipArchive();//使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
if ($zip->open($filename, ZIPARCHIVE::CREATE)!==TRUE) {
exit('无法打开文件,或者文件创建失败');
}
foreach( $datalist as $val){
if(file_exists($val)){
$zip->addFile( $val, basename($val));//第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下
}
}
$zip->close();//关闭
}
if(!file_exists($filename)){
exit("无法找到文件"); //即使创建,仍有可能失败。。。。
}
$fp=fopen($filename,"r");
$file_size=filesize($filename);
//下载文件需要用到的头
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length:".$filename);
Header("Content-Disposition: attachment; filename=".basename($filename));
$buffer=1024;
$file_count=0;
//向浏览器返回数据
while(!feof($fp) && $file_count<$file_size){
$file_con=fread($fp,$buffer);
$file_count+=$buffer;
echo $file_con;
}
fclose($fp);
unlink($datastr.'.zip'); //下载完成后要进行删除

本文由以下两个网址参考而来:
http://www.cnblogs.com/hongfei/archive/2012/06/12/2546881.html http://www.lvtao.net/dev/php_zip.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: