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程序,对临时文件夹进行压缩,然后输出到 ...
随机推荐
- 【java异常】 org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.emptech.db.demo.mapper.master.MOmQuotaTBMapper.findOmQuotaTB
<mapper namespace="com.emptech.db.demo.mapper.master.MOmQuotaTBMapper"> public inter ...
- linux command lynx
[Purpose] Learning linux command lynx [Eevironment] Ubuntu 16.04 terminal apt-get ...
- Python实现终端FTP文件传输
实现终端FTP文件传输 代码结构: .├── client.py├── readme.txt└── server.py 运行截图: readme.txt tftp文件服务器 项目功能: * 客户端有简 ...
- c# Aes加解密
using System; using System.Collections.Generic; using System.IO; using System.Security.Cryptography; ...
- iOS硬解码获取宽高
1: CVPixelBufferGetWidth(_:The pixel buffer whose width you want to obtain) 获取解码后图像宽度 CVPixelBufferG ...
- nginx lnmp之nginx+php
配置如下(在server部分添加): location ~ \.php$ { include fastcgi_params; fastcgi_pass unix:/tmp/php-fcgi.sock; ...
- python总结一
1. python中的而标准数据类型: number(数字) string(字符串) list(列表) tuple(元祖) dic(字典) 其中数字类型有: python支持四种不同的数字类型: in ...
- Golang(三)Goroutine原理
前言 最近用到了一些 Golang 异步编程的地方,感觉 Golang 相对于其他语言(如 Java)对多线程编程的支持非常大,使用起来也非常方便.于是决定了解一下 Goroutine 的底层原理. ...
- pandas 获取不符合条件的dataframe
pandas 获取不符合条件的dataframe 或将其过滤掉: df[df["col"].str.contains('this'|'that')==False] >> ...
- Python【每日一问】24
问: [基础题1]: 请解释一下 if __name__ == '__main__' :的作用 [基础题2]:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母. P ...