PHP打包下载zip文件

//download to ZIP
$filename = str_replace('\\', '/', public_path()) . '/downloads_xml/' . date('YmdHis') . '.zip'; // 最终生成的文件名(含路径)
// 生成文件
$zip = new ZipArchive (); // 使用本类,linux需开启zlib,windows需取消php_zip.dll前的注释
if ($zip->open($filename, ZIPARCHIVE::CREATE) !== TRUE) {
    exit ('无法打开文件,或者文件创建失败');
}
$list = image::where('event_id', $id)->where('user_id', Auth::user()->id)->with('author')->get();
foreach ($list as $key => $value) {
    $fingerprint = explode('.', $value->fingerprint)[0];
    $zip->addFile(str_replace('\\', '/', public_path()) . '/downloads_xml/' . $fingerprint . '.xml', basename($fingerprint . ' --' . ($key+1) . '.xml')); // 第二个参数是放在压缩包中的文件名称,如果文件可能会有重复,就需要注意一下
}
$zip->close(); // 关闭
//下面是输出下载;
header("Cache-Control: max-age=0");
header("Content-Description: File Transfer");
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);//输出文件;
这虽然是在laravel下做的(记得use ZipArchive),但是步骤什么的都一样,希望对大家有所帮助。
需要下载其他格式更改Content-Type即可,具体请参考http://tool.oschina.net/commons  里面有详解
要想增加别的内容压缩,只需复制$zip->addFile这一行代码即可。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值