java 打包边下载_JAVA实现边下载边压缩
@ResponseBodypublic voiddownloadUrl(HttpServletResponse response, HttpServletRequest request){
String sourceFilePath=properties.getString("sourceFilePath");//要下载的文件路径
eavlProName = xxx;//项目名
String downloadName = "xxx.zip"; //下载文件名
String agent = request.getHeader("USER-AGENT"); //浏览器内核信息
try{if (agent.contains("MSIE")||agent.contains("Trident")) {//IE
downloadName = java.net.URLEncoder.encode(downloadName, "UTF-8");
}else{
downloadName= new String(downloadName.getBytes("UTF-8"),"ISO-8859-1");
}
}catch(Exception e) {
e.printStackTrace();
}
zip(sourceFilePath, eavlProName, response, downloadName);
response.getOutputStream().close();//这个应该没什么用
}private voidzip(String souceFileName, String eavlProName, HttpServletResponse response, String downloadName) {
File file= newFile(souceFileName);try{
zip(file, eavlProName, response, downloadName);
}catch(IOException e) {
e.printStackTrace();
}
}private void zip(File souceFile, String eavlProName, HttpServletResponse response, String downloadName) throwsIOException {
ZipOutputStream out= null;//设置压缩流。
response.setHeader("Content-Disposition", "attachment;fileName=\"" + downloadName + "\"");try{
out= new ZipOutputStream(newBufferedOutputStream(response.getOutputStream()));
out.setMethod(ZipOutputStream.DEFLATED);//设置压缩方法
} catch(Exception e) {
e.printStackTrace();
}
out.setEncoding("gbk");
zip(souceFile, out, eavlProName, eavlProName,null);
out.closeEntry();
out.close();
}private voidzip(File souceFile, ZipOutputStream out, String base, String eavlProName, Integer i)throwsIOException {if(souceFile.isDirectory()) {
File[] files=souceFile.listFiles();if (files.length != 0) {if (i == null || i != 1) { //对于地方目录先不创建,当地方目录下存在项目的截图时,才创建
out.putNextEntry(new ZipEntry(base + "/"));
base= base.length() == 0 ? "" : base + "/";
}if (i == null) {
i= 0;
}
i++;for(File file : files) {if (i == null || i != 2) { //2地方下面的项目名.这种不创建目录
zip(file, out, base +file.getName(), eavlProName, i);
}else{
String picPathname=file.getName();if (picPathname.equals(eavlProName)) { //取对应项目下的文件
zip(file, out, base, eavlProName, i);
}
}
}
}
}else{if (base.length() > 0) {
out.putNextEntry(newZipEntry(base));
}else{
out.putNextEntry(newZipEntry(souceFile.getName()));
}
FileInputStream in= newFileInputStream(souceFile);intb;byte[] by = new byte[1024];while ((b = in.read(by)) != -1) {
out.write(by,0, b);
}
in.close();
}
}
java 打包边下载_JAVA实现边下载边压缩相关推荐
- java多线程下载_Java实现多线程下载,支持断点续传
多线程下载及断点续传的实现是使用 HTTP/1.1 引入的 Range 请求参数,可以访问Web资源的指定区间的内容.虽然实现了多线程及断点续传,但还有很多不完善的地方. 包含四个类: Downloa ...
- java如何实现下载_java 如何实现下载功能
展开全部 import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import j ...
- jdbc连接mysql数据库驱动下载_Java Jdbc驱动下载配置连接mysql数据库方法代码
1.MySQL JDBC驱动下载 打开上面的下载地址,选择"Platform Independent",然后下载tar.gz或zip格式的都行,之后解压出来得到Jdbc驱动(mys ...
- java上传加密_Java上传下载文件并实现加密解密
使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 com.sun.jersey jersey-client 1.18.1 ...
- java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解
废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...
- java 弹出下载_java如何实现下载弹出的对话框
展开全部 Java实现点击下载32313133353236313431303231363533e58685e5aeb931333337396234文件的时候,弹出"另存为"对话框, ...
- java socket 读取文件_Java中Socket下载一个文本文件
package com.lanqiao.demo2; import java.io.BufferedInputStream; import java.io.FileInputStream; impor ...
- java 弹出下载_java怎么实现下载弹出的对话框
Java实现点击下载文件的时候,弹出"另存为"对话框,选择保存位置,然后下载,代码如下: public void downLoad(String filePath, HttpSer ...
- java url类下载_Java根据url下载图片或文件的工具类-Fun言
package cn.funyan.utils; import java.io.FileOutputStream; import java.io.IOException; import java.io ...
最新文章
- 求1 + 2 + 3...+ n的和
- python画图-python画图的两种方法
- JavaScript之Set与Map
- JSONUtils.toJSONString的一个坑
- android使用HttpURLConnection/HttpClient实现带参数文件上传
- progress组件(进度条)
- count() * ,1,字段 三兄弟
- 小透明学弟的华为上岸之路
- Python 下载文件并保存文件到本地
- 力扣-103. 二叉树的锯齿形层序遍历
- python深度学习之TensorFlow
- 网络蜘蛛的工作原理及操作
- 计算机用户无法删除文件,教你几招解决电脑上的文件夹删不掉怎么办?
- go mysql打印sql语句
- Spring-Boot框架学习视频-百度云盘
- 京东店铺的所有商品API接口-(item_search_shop-获得店铺的所有商品接口),京东API接口
- linux php验证码,openwrt路由器搭建PHP并用PHP识别验证码
- nginx 配置HTTPS证书-阿里云服务器
- 机器学习-第2关:信息熵与信息增益
- 读《鬼谷子的局》笔记
热门文章
- python 示例_Python使用示例设置add()方法
- css框架和js框架_优雅设计的顶级CSS框架
- Java LocalDate类| minusWeeks()方法与示例
- java 标准输入流 关闭 打开_java输出流关流疑问,以下这个程序的in和out是否要关闭?...
- python中if嵌套语句_python_if判断_三_if的嵌套
- 安装gem_Python安装第三方库及常见问题处理方法汇总
- 用于数据分析的Python – Pandas
- Docker中的Nginx搭建HTTPS环境
- Vuetable-2使用全纪录
- 计算机存储数字,计算机是如何存储数字的