在这种情况下,我创建了一个包含搜索结果文件的zip文件,并试图将其发送给用户。这是我目前正在尝试使用的代码块。如何通过响应OutputStream将一个zip文件返回给浏览器?
File[] zippable = new File[files.size()];
File resultFile = ZipCreator.zip(files.toArray(zippable), results);
InputStream result = new FileInputStream(resultFile);
IOUtils.copy(result, response.getOutputStream());
但是,这目前不能正常工作。它不会返回我创建的zip文件,而是返回一个html文件。如果以后我手动更改文件扩展名,我可以看到文件的内容仍然是我需要的搜索结果。所以问题在于将适当的扩展返回给响应。
有没有人有这种情况的任何建议?
我想我可能会在这里误解你。我已经添加了一行代码,所以它现在读取'response.setHeader(“Content-Type”,“application/zip”);' 尽管如此,仍然没有成功。这个调用是在拨打IOUtils.copy – Bennie 2012-01-11 17:10:09
@Bennie之前完成的:看起来不错,但是对于用于ZIP文件的“正确的”MIME类型也存在一些混淆,因此您可能需要使用这些值。 – maerics 2012-01-11 17:11:05
好吧,看起来它现在正在工作,至少对于返回文件。尽管这个文件被称为“exportZipSearchResults.htm.zip”,但它做了一件奇怪的事情。有没有内置的方法来改变响应的文件名? – Bennie 2012-01-11 21:44:06