服务端zip打包下载

这几天有一个需求说,一个点击操作,需要产生多个文件的下载,理论上是不可行的。应该一个请求只能有一个响应。所以,考虑把多个文件打包成一个zip包后,再下载。上网搜了一下,可以利用ZipOutputStream类。一开始,什么都不知道,于是随便用的是java.util.zip.ZipOutputStream。后来,发现,尽管产生的文件在服务端没有乱码问题,但是当文件添加到zip包里面后,在客户端下载得到的zip包里面,得到的中文文件名都是乱码。于是在想,换一下编码应该可以吧。试了半天还是不行,又搜了半天,才发现,java.util.zip.ZipOutputStream缺乏编码的转换,中文乱码问题肯定是解决不了的。再搜,发现apache也有一个org.apache.tools.zip.ZipOutputStream,,方法声明的什么都一样。于是把类的引用路径改了一下,运行。成功了!!!!

mark 一下用法

1 import org.apache.tools.zip.ZipEntry; 2 import org.apache.tools.zip.ZipOutputStream; 3 4String zipfilename = “result.zip”; 5String zipfilepath = storagePath + zipfilename; 6ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipfilepath)));[2048]; 8int len; 9 10String fileName = “我是中文名.txt”; 11File file = new File(storagePath + fileName);file.createNewFile();14 }bw.write(sb.toString()); bw.close(); zos.putNextEntry(ze);21BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file));22while((len = bis.read(buf)) > 0){23zos.write(buf, 0, len);24 }25 bis.close();26 zos.closeEntry();27zos.close();发现一种久违的感动。

服务端zip打包下载

相关文章:

你感兴趣的文章:

标签云: