java– 如何为“虚拟文件”列表创建ZIP文件并输出到httpservletresponse

java– 如何为“虚拟文件”列表创建ZIP文件并输出到httpservletresponse,第1张

概述我的目标是将多个java.io.File对象放入zip文件并打印到HttpServletResponse以供用户下载.这些文件是由JAXB marshaller创建的.它是一个java.io.File对象,但它实际上不在文件系统上(它只在内存中),因此我无法创建FileInputStream.我见过的所有资源都使用OutputStream来打印zip文件内容

我的目标是将多个java.io.file对象放入zip文件并打印到httpServletResponse以供用户下载.

这些文件是由JAXB marshaller创建的.它是一个java.io.file对象,但它实际上不在文件系统上(它只在内存中),因此我无法创建fileinputStream.

我见过的所有资源都使用OutputStream来打印zip文件内容.但是,所有这些资源都使用fileinputStream(我无法使用).

谁知道我怎么能做到这一点?

最佳答案看看Apache Commons Compress库,它提供了您需要的功能.

当然,“erickson”对你的问题发表评论是正确的.您将需要文件内容而不是java.io.file对象.在我的例子中,我假设你有一个方法
byte [] getTheContentFormSomewhere(int fileNummer),它返回fileNummer-th文件的文件内容(在内存中). – 当然这个功能设计很差,但它仅用于说明.

它应该有点像这样:

voID compress(final OutputStream out) {  ZipOutputStream zipOutputStream = new ZipOutputStream(out);  zipOutputStream.setLevel(ZipOutputStream.STORED);  for(int i = 0; i < 10; i++) {     //of course you need the file content of the i-th file     byte[] onefileContent = getTheContentFormSomewhere(i);     addOnefileToZipArchive(zipOutputStream,"file"+i+"."txt",onefileContent);  }  zipOutputStream.close();}voID addOnefileToZipArchive(final ZipOutputStream zipStream,String filename,byte[] content) {    ZipArchiveEntry zipEntry = new ZipArchiveEntry(filename);    zipStream.putNextEntry(zipEntry);    zipStream.write(pdfBytes);    zipStream.closeEntry();}

你的http控制器的Snipets:

httpServletResponse response...  response.setContentType("application/zip");  response.addheader("Content-disposition","attachment; filename=\"compress.zip\"");  response.addheader("Content-transfer-encoding","binary");  ByteArrayOutputStream outputBuffer = new ByteArrayOutputStream();  compress(outputBuffer);  response.getoutputStream().write(outputBuffer.toByteArray());  response.getoutputStream().flush();  outputBuffer.close();
总结

以上是内存溢出为你收集整理的java – 如何为“虚拟文件”列表创建ZIP文件并输出到httpservletresponse全部内容,希望文章能够帮你解决java – 如何为“虚拟文件”列表创建ZIP文件并输出到httpservletresponse所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263182.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存