php 获取某文件夹(比如共享文件夹)下图片并下载并压缩成zip
1.前端部分:直接请求


2.后端php
//zip下载
public function downZip(){
$pro_code = "test"; //zip名称
//获取列表
$dir = input('path',''); //文件路径 eg: \\192.168.199.176\20200522153602501004911\
$filelist = getImgList($dir);
$filepath = $_SERVER['DOCUMENT_ROOT'].'/downZip/'; //项目中存放zip文件路径
if(!is_dir($filepath)){
mkdir($filepath);
}
//文件名称及路径
$filename = $filepath.$pro_code.'.zip';
$filename = iconv("utf-8","gb2312",$filename); //解决中文不能显示问题
if(!file_exists($filename)){
//使用ZipArchive类重新生成文件
$zip = new \ZipArchive();
if($zip->open($filename,\ZIPARCHIVE::CREATE)){
foreach($filelist as $file){
if(file_exists($file)){
$zip->addFile($file, basename($file)); //zip写入数据
}
}
}else{
exit('无法打开文件,或者文件创建失败!');
}
$zip->close();
}
//创建后需再次判断文件是否存在
if(!file_exists($filename)){
exit('没有找到文件!');
}
//下面是输出下载;
header("Cache-Control:max-age=0");
header("Content-Description:FileTransfer");
header('Content-disposition:attachment;filename='.basename($filename));//文件名
header("Content-Type:application/zip");//zip格式的
header("Content-Transfer-Encoding:binary");//告诉浏览器,这是二进制文件
header('Content-Length:'.filesize($filename));//告诉浏览器,文件大小
@readfile($filename);//输出文件;
}
//获取图片文件列表函数
function getImgList($dir){
$files = array();
if(is_dir($dir)){
$file_dir = scandir($dir);
foreach($file_dir as $file){
if($file == '.' || $file == '..'){
continue;
}elseif(is_dir($dir.$file.'/')){
$files = array_merge($files, getImgList($dir.$file.'/'));
}else{
if(isImage($dir.$file) !== false){
array_push($files, $dir.$file);
}
}
}
}
return $files;
}
php 获取某文件夹(比如共享文件夹)下图片并下载并压缩成zip的更多相关文章
- linux下压缩成zip文件解压zip文件
linux zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux zip命令参数列表: -a 将文件转成ASCII模式 -F 尝试修复损坏 ...
- Java实现将文件或者文件夹压缩成zip
最近碰到个需要下载zip压缩包的需求,于是我在网上找了下别人写好的zip工具类.但找了好多篇博客,总是发现有bug.因此就自己来写了个工具类. 这个工具类的功能为: ( ...
- 【转】Java实现将文件或者文件夹压缩成zip
转自:https://www.cnblogs.com/zeng1994/p/7862288.html package com.guo.utils; import java.io.*; import j ...
- vue-webpack项目自动打包压缩成zip文件批处理
为什么需要这个? 使用vue框架开发项目,npm run build这个命令会一直用到,如果需要给后端发包,那你还要打包成zip格式的压缩包,特别是项目提测的时候,一天可能要执行重复好几次,所以才有了 ...
- java实现将文件压缩成zip格式
以下是将文件压缩成zip格式的工具类(复制后可以直接使用): zip4j.jar包下载地址:http://www.lingala.net/zip4j/download.php package util ...
- java 压缩文件 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件
/** * 传入文件数组,压缩文件,在指定路径下生成指定文件名的压缩文件 * * @param files * 文件数组 * @param strZipName * 压缩文件路径及文件名 * @thr ...
- Vue -- webpack 项目自动打包压缩成zip文件
这段时间用 Vue2.0 开发项目,每次打包都会用到 npm run build 命令,但是每次部署时给后端发包都要手动zip压缩,这样一两次还行,但遇到项目板块测试和临时加急功能测试的时候,一天可能 ...
- PPT文件流转为图片,并压缩成ZIP文件输出到指定目录
实现流程: 接收InputStream流->复制流->InputStream流转为PPT->PPT转为图片->所有图片压缩到一个压缩文件下 注意: 1.PPT文件分为2003和 ...
- 下载文件夹里面的所有文件,并压缩成.zip压缩包的形式
http://www.aspsnippets.com/Articles/Download-multiple-files-as-Zip-Archive-File-in-ASPNet-using-C-an ...
随机推荐
- Visual Studio添加引用的方式
- 新元科技签订5.8亿元IPFS合同,IPFS国家认可吗?IPFS挖矿是不是合法的?
就在昨天,也就是 3 月 15 日,FIL 又有一波较大的涨幅,现流通市值排名第 15,总市值预计 6818.16 亿.FIL 见涨,一些公司也按耐不住了.也是在3月15日,A 股上市公司新元科技签订 ...
- P1055_ISBN号码(JAVA语言)
题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括9位数字.1位识别码和3位分隔符, 其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号), 最后一位是 ...
- 开灯问题3_2(JAVA语言)
package 第三章; public class 开灯问题3_2 { public static void main(String[] args) { // TODO Auto-generated ...
- Announcing cnblogs-hardening 1.0 Preview 1
Release Notes Write about coding Note About coding Share about coding Talk about coding Comment abou ...
- 极速精简 Go 版 Logstash
前言 今天来介绍 go-zero 生态的另一个组件 go-stash.这是一个 logstash 的 Go 语言替代版,我们用 go-stash 相比原先的 logstash 节省了2/3的服务器资源 ...
- Logtash 配置文件解析-转载
转载地址:https://dongbo0737.github.io/2017/06/13/logstash-config/ Logtash 配置文件解析 logstash 一个ELK架构中,专门用来进 ...
- [GDKOI2021] 普及组 Day2 总结
[ G D K O I 2021 ] 普 及 组 D a y 2 总 结 [GDKOI2021] 普及组 Day2 总结 [GDKOI2021]普及组Day2总结 时间安排和昨天的GDKOI2021 ...
- 可视化运行Python的神器Jupyter Notebook
目录 简介 Jupyter Notebook 启动notebook server notebook document 的结构 code cells markdown cells raw cells 以 ...
- 一、python学习-基础语法
1.计算机文件大小单位 b = bit 位(比特) 位代表 0 1 B = Byte字节 1Byte = 8 bit //一个字节等于8位 1KB = 1024B 1MB = 1024KB 1GB = ...