从云服务器上下载文件,以压缩包方式下载

以下载多个文件为例,需要导入zip4j的jar包,版本不要太高

public void downloadZip(List list, HttpServletRequest request, HttpServletResponse response) {

String zipFileName = "";

File[] tempList = null;

//因为我这边在classpath下无法获取到新建文件夹,所以使用路径拼接

String path = this.getClass().getClassLoader().getResource("template/").getPath();

path += "tempPack";

File outFile = new File(path);

for (fielEntiry file : list) {

String url = file.getUrl();//云服务器文件链接

String fileName = assc.getFileName();

if (!outFile.exists()) {

outFile.mkdirs();

}

try {

download(url, path, fileName);

} catch (Exception e) {

e.printStackTrace();

}

}

zipFileName = "/报告.zip";

tempList = outFile.listFiles();

createZipFile(path, zipFileName, tempList);

for (File file : outFile.listFiles()) {

download(file, request, response);

}

} else {

throw new BadRequestException("暂无报告附件");

}

}

}

*下载文件到临时文件夹

public void download(String urlPath, String targetDirectory, String fileName) throws Exception {

URL url = new URL(urlPath);

HttpURLConnection http = (HttpURLConnection) url.openConnection();

InputStream inputStream = http.getInputStream();

byte[] buff = new byte[1024 * 10];

OutputStream out = new FileOutputStream(new File(targetDirectory, fileName));

int lenth = -1;

while ((lenth = inputStream.read(buff)) != -1) {

out.write(buff, 0, len);

out.flush();

}

// 关闭资源

out.close();

inputStream.close();

http.disconnect();

}

*将文件打包成zip文件

public static ZipFile createZipFile(String templatePathZip, String fileName, File... files) {

try { // 创建zip包,指定路径和名称

final ZipFile zipFile = new ZipFile(templatePathZip + fileName);

// 向zip包中添加文件集合

final ArrayList fileAddZip = new ArrayList();

File file1 = zipFile.getFile();

if (file1.exists()) {

file1.delete();

}

// 向zip包中添加文件

for (File file : files) {

fileAddZip.add(file);

}

// 设置zip包的一些参数集合

final ZipParameters parameters = new ZipParameters();

// 是否设置密码(若passwordZip为空,则为false)

/*if (null != passwordZip && !passwordZip.equals("")) {

parameters.setEncryptFiles(true);

// 压缩包密码

parameters.setPassword(passwordZip);

} else { }*/

parameters.setEncryptFiles(false);

// 压缩方式(默认值)

parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);

// 普通级别(参数很多)

// parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

// 加密级别

// parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);

// 创建压缩包完成

zipFile.createZipFile(fileAddZip, parameters);

//压缩完成后删除文件

for (File file : files) {

file.delete();

}

return zipFile;

} catch (final Exception e) {

e.printStackTrace();

return null;

}

}

*下载生成的word文件并删除临时文件

private void download(File file, HttpServletRequest request, HttpServletResponse response) {

ServletOutputStream out = null;

FileInputStream inputStream = null;

try {

String filename = file.getName();

String userAgent = request.getHeader("User-Agent");

// 针对IE或者以IE为内核的浏览器:

if (userAgent.contains("MSIE") || userAgent.contains("Trident")) {

filename = java.net.URLEncoder.encode(filename, "UTF-8");

} else {

// 非IE浏览器的处理:

// filename = URLEncoder.encode(filename, "UTF-8");

filename = new String(filename.getBytes("UTF-8"), "ISO-8859-1");

}

response.setHeader("Content-disposition",

String.format("attachment; filename=\"%s\"", filename));

response.setContentType("application/download");

response.setCharacterEncoding("UTF-8");

out = response.getOutputStream();

inputStream = new FileInputStream(file);

byte[] buffer = new byte[1024 * 10];

int lenth = -1;

// 通过循环将读入的Word文件的内容输出到浏览器中

while ((lenth = inputStream.read(buffer)) != -1) {

out.write(buffer, 0, bytesToRead);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (null != out) out.close();

if (null != inputStream) inputStream.close();

file.delete();

} catch (Exception e2) {

e2.printStackTrace();

}

}

}

注:部分代码是在网上查找的资料,然后根据自己需要写的

java 下载zip文件_Java以压缩包方式下载文件相关推荐

  1. java ftp 读取 txt文件_java通过ftp方式读取文件,并解析入库

    对于自己是个总结,下次使用的时候直接copy,要注意的地方是ftp访问文件的方式,访问的是ftp用户的home目录,而不是从绝对路径访问. private final static String DE ...

  2. java 网络文件_java实现从网络下载多个文件

    java从网络下载多个文件,供大家参考,具体内容如下 首先是打包下载多文件,即打成压缩包在下载. 其次 别处的资源:可以是别的服务器,可以是网上的资源,当然也可以是本地的(更简单) 最后:一次性下载, ...

  3. java读取zip文件名_java无需解压zip压缩包直接读取包内的文件名(含中文)

    java自带了java.util.zip工具可以实现在不解压zip压缩包的情况下读取包内文件的文件名:(注:只能是ZIP格式的,rar我试了不行)代码如下: public static String ...

  4. java 双声道音频_java实现切割wav音频文件的方法详解【附外部jar包下载】

    本文实例讲述了java实现切割wav音频文件的方法.分享给大家供大家参考,具体如下: import it.sauronsoftware.jave.Encoder; import it.sauronso ...

  5. java中写入文件_java中创建、写入文件的5种方式

    在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java中创建文件的五种方法. Files.newBufferedWriter(Java 8) Files. ...

  6. java在linux创建文件_Java中创建并写文件的5种方式

    导读 在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下面笔者就帮大家总结一下java中创建文件的五种方法. 在java中有很多的方法可以创建文件写文件,你是否真的认真的总结过?下 ...

  7. Spring Boot 实现将多个MinIO文件压缩成压缩包并下载至本地

    1 Maven依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all< ...

  8. .xz是什么文件怎么解压_zip解压app下载-zip解压app安卓版下载v11.5.6

    zip解压APP为用户提供了完全免费的文件解压缩功能服务,超高效的压缩和解压,支持将文档.图片.PDF和图片等多种文件夹进行压缩,压缩和解压的过程稳定高效,不会 影响文件打开也不会有乱码出现.还可以解 ...

  9. java追加txt文件_java怎么追加写入txt文件

    java中,对文件进行追加内容操作的三种方法! import java.io.BufferedWriter;import java.io.FileOutputStream;import java.io ...

最新文章

  1. jQuery ajax请求成功且返回了数据,但是不进success:function()
  2. 服务器控件的异步请求——UpdatePanel和ScriptManager
  3. android布局加色,android – 如何以编程方式将LinearLayout添加背景颜色,并将权重添加到另一个布局...
  4. 表达式求值(NOIP2013 普及组第二题)
  5. 操作系统实验一linux,操作系统实验一 Linux基本操作.doc
  6. Google 今天抽风了!
  7. 在WINDOWS XP环境下部署基于网络的开源入侵监测平台——snort
  8. 最拼命最努力的时候(转)
  9. liunux 查看系统参数、网络参数的命令
  10. 强强联手|任子行公司董事长景晓军一行到访云畅科技交流
  11. 60岁首席工程师被SpaceX边缘化,主管:我怕他退休或死了
  12. 基于python使用CV裁剪图片
  13. Unity太空大战游戏-Socket网络通信教学示例
  14. 可信认证之九阴真经一
  15. AI 人工智能 干货分享
  16. WCF服务通过TCP实时监控客户端状态,并可以向客户端广播推送消息,实现双向通信
  17. 系统定时任务linux,linux系统下定时任务(示例代码)
  18. 容器云java开发_使用码云构建 Docker 容器镜像并部署到华为云
  19. jmeter下载及安装配置
  20. log4net 配置文件相对路径配置

热门文章

  1. Shell脚本:shell编程规范与变量
  2. “地图易”数据采集工具介绍——地图数据采集神器
  3. mysql监控和性能分析工具
  4. 计算机导航窗口添加桌面,为Win7资源管理器导航添加桌面选项的方法
  5. STM32 4x4矩阵薄膜键盘例程
  6. 刀模绘图软件 圆刀绘图软件 圆棍绘图软件 CAD插件 外挂
  7. vue项目使用微信jssdk做分享
  8. 夺命雷公狗---javascript NO:20 面向对象历史起源
  9. 【Linux基础编程】ifconfig命令
  10. 学习笔记:Linux入门到进阶