先说一下需求,去邮箱下载对账文件,邮箱一天的对账文件可能有多个,下载后在浏览器输出。
去邮箱下载先不说,只说获取到多个文件怎么压缩下载
先写关于一个文件的下载
public void downloadoneBill(InputStream inputStream, HttpServletResponse response, HttpServletRequest request) {
//获取文件名称(包括文件格式)
String fileName = thirdPayBillSummary.getBillDate() + "thirdBillAlipay.zip";//request.getParameter("downFileName");
//方法1:IO流实现下载的功能
response.setContentType("text/html; charset=UTF-8"); //设置编码字符
response.setContentType("application/x-msdownload"); //设置内容类型为下载类型
response.setHeader("Content-disposition", "attachment;filename=" + fileName);//下载的文件名称
logger.info("[exportExcel] 导出”" + fileName + "“ begin");
//获取自己的数组
byte[] buff = new byte[4096];
int size = 0;
while ((size = inputStream.read(buff)) != -1) {
out.write(buff, 0, size);
}
out.flush();
fis.close();
out.close();
}
关于多个文件的压缩下载
public void downloadCCBBill(List<YinLianInputStream> fileInputs,HttpServletResponse response, HttpServletRequest request) {
String logId = UUID.randomUUID().toString();
logger.info("[exportExcel] 导出 downloadICBCBill begin");
//获取文件名称(包括文件格式)
String fileName = thirdPayBillSummaryDO.getBillDate() + "_thirdBillCCB.zip";
//方法1:IO流实现下载的功能
response.setContentType("text/html; charset=UTF-8"); //设置编码字符
response.setContentType("application/x-msdownload"); //设置内容类型为下载类型
response.setHeader("Content-disposition", "attachment;filename=" + fileName);//设置下载的文件名称
logger.info("[exportExcel] 导出”" + fileName + "“ begin");
//设置压缩流:直接写入response
ZipOutputStream zipos = null;
try {
zipos = new ZipOutputStream(new BufferedOutputStream(response.getOutputStream()));
zipos.setMethod(ZipOutputStream.DEFLATED); //设置压缩方法
} catch (Exception e) {
e.printStackTrace();
}
//循环将文件写入压缩流
DataOutputStream os = null;
try {
ServletOutputStream out = response.getOutputStream(); //创建页面返回方式为输出流,会自动弹出下载框
for (int i = 0; i<fileInputs.size();i++){
zipos.putNextEntry(new ZipEntry(i+"thirdPayBill.zip"));
os = new DataOutputStream(zipos);
InputStream is = fileInputs.get(i).getFileInputStream();
byte[] b = new byte[100];
int length = 0;
while((length = is.read(b))!= -1){
os.write(b, 0, length);
}
is.close();
zipos.closeEntry();
}
} catch (IOException e) {
logger.error("下载建行聚合支付账单异常" + e);
}
//关闭流
try {
os.flush();
os.close();
zipos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
这样下载的结果是一个压缩文件里面有n个压缩文件
以上
Tourism doesn't care about the destination, but care about the way people and things and those wonderful memories and scenery.
旅游不在乎终点,而是在意途中的人和事还有那些美好的记忆和景色。