php 批量下载文件
public function batchDownload()
{
$filename = 'tmp.zip';
$zipName = date('YmdHi') . '.zip';
$files = 'xxxx';//文件列表
$zip = new \ZipArchive();
$zip->open($filename, \ZipArchive::CREATE | \ZipArchive::OVERWRITE);
$folder = base_path();//保存时需要去掉的父级文件夹
foreach ($files as $item) {
$filepath = base_path() . '/storage/' . $item['object_path'];
//判断路径是否存在
if (!is_file($filepath) || !file_exists($filepath)) {
continue;
}
$filepath = str_replace('\\', '/', $filepath);
$folder = str_replace('\\', '/', $folder); if (is_dir($filepath) === true) {
$files = new \RecursiveDirectoryIterator($filepath, \RecursiveIteratorIterator::SELF_FIRST);
foreach ($files as $file) { $file = str_replace('\\', '/', $file);
if(in_array(substr($file, strrpos($file, '/') + 1), array('.', '..')))
continue;
if (is_dir($file) === true) {
$zip->addEmptyDir(str_replace($folder . '/', '', $file . '/'));
} else if (is_file($file) === true) {
$zip->addFromString(str_replace($folder . '/', '', $file), file_get_contents($file));
}
} } else if (is_file($filepath) === true) {
$zip->addFromString(basename($filepath), file_get_contents($filepath));
}
//$zip->addFile($filepath); } $zip->close(); $file = fopen($filename, "r");
Header("Content-type: application/octet-stream");
Header("Accept-Ranges: bytes");
Header("Accept-Length: " . filesize($filename));
Header("Content-Disposition: attachment; filename=" . $zipName);
while (!feof($file)) {
fpassthru($file); // 输出至浏览器
fclose($file);
unlink($filename); //删除临时文件
exit;
}
}
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 ...
- 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程序,对临时文件夹进行压缩,然后输出到 ...
- ASP.NET批量下载文件
一.实现步骤 在用户操作界面,由用户选择需要下载的文件,系统根据所选文件,在服务器上创建用于存储所选文件的临时文件夹,将所选文件拷贝至临时文件夹.然后调用 RAR程序,对临时文件夹进行压缩,然后输出到 ...
- asp.net怎样实现批量下载文件(非打包形式下载)
问题: 我想实现的是一个一个的下载. 比如我有一个文件列表.通过checkbox选择.通过单击下载按钮下载选中文件. 百度到都是用打包形式实现批量下载. 这是我自己写的代码,但是点击下载后只能下载一个 ...
随机推荐
- 记一次Monolog的BufferHandler使用
laravel中可以设置自定义的日记channel(config/logging中设置),按照laravel-china的一篇文章,把log按一定格式并且以批量的方式写入日志文件: https://l ...
- Virtualbox下克隆CentOS 网络配置
Virtualbox下克隆虚拟机非常容易,也使得我们在平常搭建测试环境方便了许多.不过克隆以后的虚机并不能够直接联网,这是由于网卡的MAC地址引起的.在"控制->复制"弹出的 ...
- Jmeter软件介绍
1.软件结构 Apache JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资 ...
- mysql主从脚本
#!/bin/bash #auto make install mysql AB Replication #by author ale #-- :: MYSQL_SOFT="mariadb m ...
- C#客户端和服务端数据的同步传输 (转载)
客户端: using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;u ...
- sql优化之concat/concat_ws/group_concat
原文1:https://baijiahao.baidu.com/s?id=1595349117525189591&wfr=spider&for=pc 原文2:https://www.y ...
- curl -d中的json存在引号怎么处理?
1\将其改写为I'\''m就可以执行 2\ curl -u elastic:mypass -X GET "localhost:9200/_analyze?pretty" -d 'a ...
- session的简单应用
session的作用:服务器端保存信息. 用户登陆后,服务器端保存了 自定义的key:value 如下: if username == 'xxx' and password == 'xxxx': re ...
- 20175314 《Java程序设计》第七周学习总结
20175314 <Java程序设计>第七周学习总结 教材学习内容总结 第八章:常用实用类 String()类代表字符串:Java 程序中的所有字符串字面值(如 "abc&quo ...
- Distance on the tree
Distance on the tree https://nanti.jisuanke.com/t/38229 DSM(Data Structure Master) once learned abou ...