php打包压缩下载多大,php多文件打包压缩下载简单示例

调用php中内置扩展ZipArchive类可以进行文件压缩打包下载,(PHP 5>=5.2.0,PHP 7,PECL zip>=1.1.0)

调用php中内置扩展ZipArchive类可以进行文件压缩打包下载,(PHP 5>=5.2.0,PHP 7,PECL zip>=1.1.0)

简单示例:<?php

function zipfile($file_path){

// 压缩多个文件

$fileList = explode(',', $file_path);

$filename = time() . ".zip"; // 压缩包所在的位置路径

$zip = new ZipArchive();

$zip->open($filename, ZipArchive::CREATE); //打开压缩包

foreach ($fileList as $file) {

$zip->addFile($file, basename($file)); //向压缩包中添加文件

}

$rs = $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=" . $filename);

//一次性将数据传输给客户端

//echo fread($file, filesize($filePath));

//一次只传输1024个字节的数据给客户端

//向客户端回送数据

$buffer = 1024;//

//判断文件是否读完

while (!feof($file)) {

//将文件读入内存

$file_data = fread($file, $buffer);

//每次向客户端回送1024个字节的数据

echo $file_data;

}

//将生成的zip文件在服务器端删除,只需要客户端下载就行了

@unlink($filename);

}

zipfile('E:\www\test\filetest\getfile\1.jpg,E:\www\test\filetest\getfile\1.txt');

?>

ZipArchive::addEmptyDir — 添加新目录

ZipArchive::addFile — 将文件从给定路径添加到ZIP存档

ZipArchive::addFromString — 使用文件的内容将文件添加到ZIP存档

ZipArchive::addGlob — 按glob模式从目录添加文件

ZipArchive::addPattern — 按PCRE模式从目录添加文件

ZipArchive::close — 关闭活动存档(已打开或新创建)

ZipArchive::count — 统计存档中的文件数

ZipArchive::deleteIndex — 使用存档中的索引删除该项

ZipArchive::deleteName — 删除存档中使用其名称的条目

ZipArchive::extractTo — 提取存档内容

ZipArchive::getArchiveComment — 返回Zip存档注释

ZipArchive::getCommentIndex — 使用条目索引返回条目的注释

ZipArchive::getCommentName — 返回使用项名称的项的注释

ZipArchive::getExternalAttributesIndex — 检索由其索引定义的项的外部属性

ZipArchive::getExternalAttributesName — 检索由其名称定义的项的外部属性

ZipArchive::getFromIndex — 使用其索引返回项内容

ZipArchive::getFromName — 使用其名称返回条目内容

ZipArchive::getNameIndex — 返回使用其索引的项的名称

ZipArchive::getStatusString — 返回状态错误消息、系统和/或zip消息

ZipArchive::getStream — 获取由其名称定义的条目的文件处理程序(只读)

ZipArchive::isCompressionMethodSupported — 检查libzip是否支持压缩方法

ZipArchive::isEncryptionMethodSupported — 检查libzip是否支持加密方法

ZipArchive::locateName — 返回存档项的索引

ZipArchive::open — 打开压缩文件存档

ZipArchive::registerCancelCallback — 注册回调以允许在存档关闭期间取消。

ZipArchive::registerProgressCallback — 注册回调以在存档关闭期间提供更新。

ZipArchive::renameIndex — 重命名由其索引定义的项

ZipArchive::renameName — 重命名由其名称定义的项

ZipArchive::replaceFile — 用给定的路径替换ZIP存档中的文件

ZipArchive::setArchiveComment — 设置ZIP存档的注释

ZipArchive::setCommentIndex — 设置由其索引定义的项注释

ZipArchive::setCommentName — 设置由名称定义项注释

ZipArchive::setCompressionIndex — 设置由索引定义的项的压缩方法

ZipArchive::setCompressionName — 设置由名称定义的项的压缩方法

ZipArchive::setEncryptionIndex — 设置由其索引定义的项的加密方法

ZipArchive::setEncryptionName — 设置由名称定义的项的加密方法

ZipArchive::setExternalAttributesIndex — 设置由其索引定义的项的外部属性

ZipArchive::setExternalAttributesName — 设置由名称定义的项的外部属性

ZipArchive::setMtimeIndex — 设置由其索引定义的项的修改时间

ZipArchive::setMtimeName — 设置由名称定义的条目的修改时间

ZipArchive::setPassword — 设置活动存档的密码

ZipArchive::statIndex — 获取由其索引定义的项的详细信息

ZipArchive::statName — 获取由名称定义的项的详细信息

ZipArchive::unchangeAll — 撤消存档中所做的所有更改

ZipArchive::unchangeArchive — 还原存档中完成的所有全局更改

ZipArchive::unchangeIndex — 还原对给定索引项所做的所有更改

ZipArchive::unchangeName — 还原对具有给定名称的条目所做的所有更改

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来为您解答。 首先,您可以使用 Java 中的 ZipOutputStream 类来进行多文件压缩。下面是一个简单示例代码,演示如何将多个文件压缩成一个 ZIP 文件: ```java import java.io.*; import java.util.zip.*; public class ZipExample { public static void main(String[] args) { try { // 创建 ZIP 文件输出流 FileOutputStream fos = new FileOutputStream("example.zip"); ZipOutputStream zos = new ZipOutputStream(fos); // 待压缩文件列表 String[] fileNames = {"file1.txt", "file2.txt", "file3.txt"}; // 遍历文件列表,将每个文件加入 ZIP 文件中 for (String fileName : fileNames) { // 创建文件输入流 FileInputStream fis = new FileInputStream(fileName); ZipEntry zipEntry = new ZipEntry(fileName); zos.putNextEntry(zipEntry); // 读取文件内容并写入 ZIP 文件中 byte[] buffer = new byte[1024]; int len; while ((len = fis.read(buffer)) > 0) { zos.write(buffer, 0, len); } // 关闭文件输入流 fis.close(); } // 关闭 ZIP 文件输出流 zos.close(); fos.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 接下来,您可以使用 Java 中的 HttpServletResponse 类来将 ZIP 文件下载到客户端。下面是一个示例代码,演示如何实现文件下载: ```java import java.io.*; import javax.servlet.http.*; public class DownloadServlet extends HttpServlet { protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取要下载文件名 String fileName = request.getParameter("fileName"); // 设置响应头,告诉浏览器要下载文件类型 response.setContentType("application/octet-stream"); // 设置响应头,告诉浏览器要下载文件名 response.setHeader("Content-Disposition", "attachment;filename=" + fileName); // 读取要下载文件并写入响应输出流 FileInputStream fis = new FileInputStream(fileName); OutputStream os = response.getOutputStream(); byte[] buffer = new byte[1024]; int len; while ((len = fis.read(buffer)) > 0) { os.write(buffer, 0, len); } os.flush(); // 关闭文件输入流和响应输出流 fis.close(); os.close(); } } ``` 在您的网站中,您可以使用一个链接来触发文件下载: ```html <a href="DownloadServlet?fileName=example.zip">Download ZIP</a> ``` 当用户点击该链接时,浏览器将向服务器发送一个 GET 请求,DownloadServlet 将读取名为 example.zip文件并将其写入响应输出流,浏览器将显示一个文件下载对话框,用户可以选择保存或打开该文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值