@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实现边下载边压缩相关推荐

  1. java多线程下载_Java实现多线程下载,支持断点续传

    多线程下载及断点续传的实现是使用 HTTP/1.1 引入的 Range 请求参数,可以访问Web资源的指定区间的内容.虽然实现了多线程及断点续传,但还有很多不完善的地方. 包含四个类: Downloa ...

  2. java如何实现下载_java 如何实现下载功能

    展开全部 import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import j ...

  3. jdbc连接mysql数据库驱动下载_Java Jdbc驱动下载配置连接mysql数据库方法代码

    1.MySQL JDBC驱动下载 打开上面的下载地址,选择"Platform Independent",然后下载tar.gz或zip格式的都行,之后解压出来得到Jdbc驱动(mys ...

  4. java上传加密_Java上传下载文件并实现加密解密

    使用 Jersey 服务器实现上传,使用 HTTP 请求实现下载 引入依赖 在 pom.xml 中添加 Jersey 相关依赖 com.sun.jersey jersey-client 1.18.1 ...

  5. java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解

    废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...

  6. java 弹出下载_java如何实现下载弹出的对话框

    展开全部 Java实现点击下载32313133353236313431303231363533e58685e5aeb931333337396234文件的时候,弹出"另存为"对话框, ...

  7. java socket 读取文件_Java中Socket下载一个文本文件

    package com.lanqiao.demo2; import java.io.BufferedInputStream; import java.io.FileInputStream; impor ...

  8. java 弹出下载_java怎么实现下载弹出的对话框

    Java实现点击下载文件的时候,弹出"另存为"对话框,选择保存位置,然后下载,代码如下: public void downLoad(String filePath, HttpSer ...

  9. java url类下载_Java根据url下载图片或文件的工具类-Fun言

    package cn.funyan.utils; import java.io.FileOutputStream; import java.io.IOException; import java.io ...

最新文章

  1. 求1 + 2 + 3...+ n的和
  2. python画图-python画图的两种方法
  3. JavaScript之Set与Map
  4. JSONUtils.toJSONString的一个坑
  5. android使用HttpURLConnection/HttpClient实现带参数文件上传
  6. progress组件(进度条)
  7. count() * ,1,字段 三兄弟
  8. 小透明学弟的华为上岸之路
  9. Python 下载文件并保存文件到本地
  10. 力扣-103. 二叉树的锯齿形层序遍历
  11. python深度学习之TensorFlow
  12. 网络蜘蛛的工作原理及操作
  13. 计算机用户无法删除文件,教你几招解决电脑上的文件夹删不掉怎么办?
  14. go mysql打印sql语句
  15. Spring-Boot框架学习视频-百度云盘
  16. 京东店铺的所有商品API接口-(item_search_shop-获得店铺的所有商品接口),京东API接口
  17. linux php验证码,openwrt路由器搭建PHP并用PHP识别验证码
  18. nginx 配置HTTPS证书-阿里云服务器
  19. 机器学习-第2关:信息熵与信息增益
  20. 读《鬼谷子的局》笔记

热门文章

  1. python 示例_Python使用示例设置add()方法
  2. css框架和js框架_优雅设计的顶级CSS框架
  3. Java LocalDate类| minusWeeks()方法与示例
  4. java 标准输入流 关闭 打开_java输出流关流疑问,以下这个程序的in和out是否要关闭?...
  5. python中if嵌套语句_python_if判断_三_if的嵌套
  6. 安装gem_Python安装第三方库及常见问题处理方法汇总
  7. 用于数据分析的Python – Pandas
  8. Docker中的Nginx搭建HTTPS环境
  9. Vuetable-2使用全纪录
  10. 计算机存储数字,计算机是如何存储数字的