PHP在线批量下载文件
在项目开发中需要给客户提供在线下载文件的功能。
解决方案:使用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在线批量下载文件的更多相关文章
- C#异步批量下载文件
C#异步批量下载文件 实现原理:采用WebClient进行批量下载任务,简单的模拟迅雷下载效果! 废话不多说,先看掩饰效果: 具体实现步骤如下: 1.新建项目:WinBatchDownload 2.先 ...
- Java批量下载文件并zip打包
客户需求:列表勾选需要的信息,点击批量下载文件的功能.这里分享下我们系统的解决方案:先生成要下载的文件,然后将其进行压缩,生成zip压缩文件,然后使用浏览器的下载功能即可完成批量下载的需求.以下是zi ...
- 批量下载文件web
最近需要这个所以写了一个例子一般批量下载由以下步骤组成: 1.确定下载的源文件位置 2.对文件进行打包成临时文件,这里会用到递归调用,需要的嵌套的文件夹进行处理,并返回文件保存位置 3.将打包好的文件 ...
- java批量下载文件为zip包
批量下载文件为zip包的工具类 package com.meeno.trainsys.util; import javax.servlet.http.HttpServletRequest; impor ...
- ajax+批量下载文件
用过浏览器的开发人员都对大文件上传与下载比较困扰,之前遇到了一个php文件夹上传下载的问题,无奈之下自己开发了一套文件上传控件,在这里分享一下.希望能对你有所帮助.此控件PC全平台支持包括mac,li ...
- php批量下载文件
最近用codeigniter开发一个图片网站,发现单文件下载很容易实现,批量下载的话,就有点麻烦. 普通php下载比较简单,比如我封装的一个函数: function shao_download($fi ...
- python_crawler,批量下载文件
这个第一个python3网络爬虫,参考书籍是<python网络数据采集>.该爬虫的主要功能是爬取某个网站,并将.rar,.doc,.docx,.zip文件批量下载. 后期将要改进的是,用后 ...
- PowerShell 实现批量下载文件
简介 批量文件下载器 PowerShell 版,类似于迅雷批量下载功能,且可以破解 Referer 防盗链 源代码 [int]$script:completed = 0 # 下载完成数量 [int]$ ...
- ASP.NET批量下载文件的方法
一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...
随机推荐
- python 识别二维码内容的方法
识别二维码链接的方式有多种,那么如何用python 的方法实现识别呢? 请看如下代码: from pyzbar.pyzbar import decode from PIL import Image i ...
- pycharm初识及格式化输出
#_*_coding:utf-8_*_#作者:王佃元#日期:2019/12/6 #格式化输出name = input("Name")age = input("Age&qu ...
- Python实现电子词典
代码一览: dictionary/├── code│ ├── client.py│ ├── func.py│ ├── server.py│ └── settings.py├── dat ...
- js中的new操作符解析
new 操作符做了以下事情: 1.创建一个对象,将对象赋值给this function Person(name, age) { console.log(this) //Person {} } let ...
- html规范思维导图(仅限于自己)
- LOJ2778 [BOI2018]基因工程 随机化
题面 不想写了...留坑吧... 基本思想可参照随机化解决判同问题的总结 代码: #include<bits/stdc++.h> using namespace std; #define ...
- 第02组 Alpha冲刺(2/6)
队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 任务分配.进度监督 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们尽快完成各自的进度 还剩下哪些任务 ...
- 二维码解析(编译zxing-cpp)
二维码解析使用的类库是zxing(官网 https://github.com/zxing/zxing). 这个类库是谷歌的,原来有c++版本,后来的更新去掉了,zxing介绍了目前基于zxing的其他 ...
- Burp Suite 入门教程(BURP SUITE TUTORIAL )
参考链接1:https://www.pentestgeek.com/what-is-burpsuite 参考链接2:https://www.pentestgeek.com/web-applicatio ...
- Azure容器监控部署(下)
上文已经基本完成了环境的搭建,prometheus可以以https的方式从node_exporter和cAdvisor上pull到数据,访问grafana时也可以以https的方式访问,安全性得到了一 ...