在项目开发中需要给客户提供在线下载文件的功能。

解决方案:使用PHP自带的ZipArchive类,将多个文件打包成zip文件,供客户下载!

使用ZipArchive类时,需要先开启php_zip扩展,没有php_zip.dll扩展的可自行下载。下载完成后将php_zip.dll文件放入PHP的ext扩展文件夹下,然后在php.ini中添加 extension=php_zip.dll,重启nginx或Apache完成扩展的安装。

下面直接上代码:

public function download()
{
$id = $this->request->get('id');
$path = DrawModel::get($id)->path; //文件存放路径 $paths = explode(',', $path);
$file_lj = str_replace("\\","/",ROOT_PATH.'public'); $zipname = $file_lj . '/files/test.zip'; //这里要预先创建一个.zip文件
//$zipname = addslashes($zipname);
$zip = new ZipArchive();
$res = $zip->open($zipname, ZipArchive::OVERWRITE); //坑一:之所以不用ZipArchive::CREATE模式,是因为ZipArchive::CREATE模式会不断往test.zip中追加内容
if ($res === TRUE) {
foreach ($paths as $path) { $new_filename = substr($path, strrpos($path, '/') + 1);
$zip->addFile($file_lj.$path, $new_filename); //坑二:addFile的第一个参数一定要是绝对路径(保证能通过该路径找到相应的文件)
}
$zip->close();
header("Content-Type: application/zip");
header("Content-Transfer-Encoding: Binary"); header("Content-Length: " . filesize($zipname));
header("Content-Disposition: attachment; filename=\"" . basename($zipname) . "\""); readfile($zipname);
exit;
} }

注意:使用ZipArchive类时别忘了引入 use ZipArchive

PHP在线批量下载文件的更多相关文章

  1. C#异步批量下载文件

    C#异步批量下载文件 实现原理:采用WebClient进行批量下载任务,简单的模拟迅雷下载效果! 废话不多说,先看掩饰效果: 具体实现步骤如下: 1.新建项目:WinBatchDownload 2.先 ...

  2. Java批量下载文件并zip打包

    客户需求:列表勾选需要的信息,点击批量下载文件的功能.这里分享下我们系统的解决方案:先生成要下载的文件,然后将其进行压缩,生成zip压缩文件,然后使用浏览器的下载功能即可完成批量下载的需求.以下是zi ...

  3. 批量下载文件web

    最近需要这个所以写了一个例子一般批量下载由以下步骤组成: 1.确定下载的源文件位置 2.对文件进行打包成临时文件,这里会用到递归调用,需要的嵌套的文件夹进行处理,并返回文件保存位置 3.将打包好的文件 ...

  4. java批量下载文件为zip包

    批量下载文件为zip包的工具类 package com.meeno.trainsys.util; import javax.servlet.http.HttpServletRequest; impor ...

  5. ajax+批量下载文件

    用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助.此控件PC全平台支持包括mac,li ...

  6. php批量下载文件

    最近用codeigniter开发一个图片网站,发现单文件下载很容易实现,批量下载的话,就有点麻烦. 普通php下载比较简单,比如我封装的一个函数: function shao_download($fi ...

  7. python_crawler,批量下载文件

    这个第一个python3网络爬虫,参考书籍是<python网络数据采集>.该爬虫的主要功能是爬取某个网站,并将.rar,.doc,.docx,.zip文件批量下载. 后期将要改进的是,用后 ...

  8. PowerShell 实现批量下载文件

    简介 批量文件下载器 PowerShell 版,类似于迅雷批量下载功能,且可以破解 Referer 防盗链 源代码 [int]$script:completed = 0 # 下载完成数量 [int]$ ...

  9. ASP.NET批量下载文件的方法

    一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...

随机推荐

  1. 2014-2015 ACM-ICPC, Asia Tokyo Regional Contest

    2014-2015 ACM-ICPC, Asia Tokyo Regional Contest A B C D E F G H I J K O O O O   O O         A - Bit ...

  2. 【MyEclipse异常】更换工作空间无法启动的异常

  3. django请求限制

    django.views.decorators.http 包里的装饰器可以基于请求的方法来限制对视图的访问. 限制视图只能服务规定的http方法.用法: from django.views.decor ...

  4. Layui 常用知识

    原文:https://www.cnblogs.com/30go/p/11088549.html 后台框架:Layui Admin Iframe layui.form.render();

  5. WebForm 打开默认页

    原文:https://www.cnblogs.com/lionden/p/3728716.html <configuration> <system.webServer> < ...

  6. set(集合)的使用方法

    1.普通集合set 直接定义一个set具有动态有序和去重的功效,不再赘述. 如果要实现set时从大到小排序(desc)的,只需要在定义的时候指定“大于符号”,即greater<class> ...

  7. bzoj [SDOI2014]数表 莫比乌斯反演 BIT

    bzoj [SDOI2014]数表 莫比乌斯反演 BIT 链接 bzoj luogu loj 思路 \[ \sum\limits_{i=1}^{n}\sum\limits_{j=1}^{m}a*[f[ ...

  8. Chrome崩溃的解决办法

    前两天Win10 更新的安全组件,第二天上班来就打开不了Chrome了,打开就是:噢哟,崩溃了! 那是连 setting 页都打不开的啊...好晕,好晕. 我是真的有点崩溃啊,在网上找了好久,什么与百 ...

  9. [EXP]CVE-2019-0604 Microsoft SharePoint RCE Exploit

    研表究明,汉字的序顺并不定一能影阅响读,比如当你看完这句话后,才发这现里的字全是都乱的. 剑桥大学的研究结果,当单词的字母顺序颠倒时,你仍旧可以明白整个单词的意思.其中重要的是:只要单词的第一个字母和 ...

  10. [原创]开源跨平台大型网络端口扫描器K8PortScan(支持批量A段/B段/C段/IP列表)

    0x000 K8PortScan Python版Cscan端口扫描器 Code: https://github.com/k8gege/K8PortScan K8portScan 1.0 Date: 2 ...