java用io流打包下载文件

  • Post author:
  • Post category:java


ByteArrayOutputStream bas = new ByteArrayOutputStream();//内存流,将流数据放在内存中

ZipOutputStream out = new ZipOutputStream(bas);将多个文件打包成一个zip文件进行下载

//将文件以流的方式写入

for (int i = 0; i < files.length; i++) {


FileInputStream in=new FileInputStream(files[i]);

out.putNextEntry(new ZipEntry(files[i].getName()));

int len;

while((len=in.read(buf))>0){


out.write(buf,0,len);

}

out.closeEntry();

in.close();

}

out.close();关闭

// 下载文件名中文乱码

HttpServletRequest request = ServletActionContext.getRequest();

if (request.getHeader(“User-Agent”).toUpperCase().indexOf(“MSIE”) > 0) {


fileName = URLEncoder.encode(fileName, “UTF-8”);

} else {

fileName = new String(fileName.getBytes(“UTF-8”), “ISO8859-1”);

}

//响应

HttpServletResponse response =  ServletActionContext.getResponse();

response.reset();

response.setContentType(“application/octet-stream;charset=UTF-8”);

response.setHeader(“Accept-ranges”, “bytes”);

response.addHeader(“Content-Disposition”, “attachment; filename=\”” + fileName + “.zip\””);

byte[] b =  bas.toByteArray();

response.addHeader(“Content-Length”, “”+b.length);

OutputStream os = new BufferedOutputStream(response.getOutputStream());

os.write(b);

os.flush();

os.close();

后面将页面到后台的完整代码




版权声明:本文为yang2415751原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。