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

解决方案:使用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. 【Mybatis】传入参数 对象+单参

    Integer update( @Param(value="bean") TXNJSTXNDetailTBBean bean, @Param(value="table&q ...

  2. 【java】new Date什么样

    Thu Nov 21 10:39:40 GMT+08:00 2019 getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31).getDay() 从 Date 对象返回一周中的某一 ...

  3. 有关OutputDebugString的一点儿事实

    我最近花了一些时间分析OutputDebugString方法.在我的另一个实验中,我需要一个仅依赖于本机API的OutputDebugString版本.在实现它的过程中,我发现了一些关于OutputD ...

  4. 常用Linux软件安装

    JDK 先从Oracle官网下载JDK Linux版本的安装包,上传到服务器,这里推荐在服务器中创建一个目录/software,可以将所有软件的安装包放在这个目录下(或者是/opt目录下),将软件包解 ...

  5. 使用Redis搭建电商秒杀系统

    背景 秒杀活动是绝大部分电商选择的低价促销.推广品牌的方式.不仅可以给平台带来用户量,还可以提高平台知名度.一个好的秒杀系统,可以提高平台系统的稳定性和公平性,获得更好的用户体验,提升平台的口碑,从而 ...

  6. linux 自动化安装系统 -KS文件

    # Kickstart file automatically generated by anaconda. installharddrive --partition=sdb2 --dir=lang e ...

  7. phpstrom 配置getter和setter

    先看一段代码 protected $mddid; /** * @return mixed */ public function getMddid() { return $this->mddid; ...

  8. Docker 部署web项目

    1.查找Docker Hub上的tomcat镜像 # docker search tomcat   2.拉取官方的镜像 # docker pull tomcat   提示:Using default ...

  9. 《Linux就该这么学》培训笔记_ch09_使用ssh服务管理远程主机

    <Linux就该这么学>培训笔记_ch09_使用ssh服务管理远程主机 文章最后会post上书本的笔记照片. 文章主要内容: 配置网络服务 远程控制服务 不间断会话服务 书本笔记 配置网络 ...

  10. html5 audio标签切换播放音乐的方法

    html5 audio标签切换播放音乐的方法<pre><audio id="music1" preload loop="loop">&l ...