我是GWT和一般网络应用程序的新手。
我正在制作一个GWT网络应用程序。它提供的一个功能是通过单击网页上的按钮来下载文件。不幸的是,文件本身并没有物理上位于服务器端。服务器端需要通过对另一个Web服务的REST调用来获取它以获取文件的InputStream。
我的问题是:
非常感谢
编辑:我找到了这个例子: How to use GWT when downloading Files with a Servlet?
在此示例中,文件实际位于服务器端。我通过流从Web服务获得的文件非常大,我不想将它们保存在我的GWT服务器端。有什么建议吗?
答案 0 :(得分:3)
我们使用类似上面示例的servlet。只需确保将标题和文件名设置为适当的类型。 (文件名必须以正确的结尾结束)
// process the data (In your case go get it)
byte[] data = generateReturnBuffer();
// do not cache
response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "must-revalidate, post-check=0, pre-check=0");
response.setHeader("Pragma", "public");
// content length is needed for MSIE
response.setContentLength(data.length);
// set the filename and the type
response.setContentType("application/pdf");
response.addHeader("Content-Disposition", "attachment;filename=" + "fileName.pdf");
ServletOutputStream out = resp.getOutputStream();
out.write(data);
out.flush();
其中响应是servlet HttpServletResponse
Look here for the valid mime types。
在某些时候,您需要将数据存储在文件或内存中,因为某些版本的Internet Explorer需要文件长度。
答案 1 :(得分:0)
将inputstream转换为首选格式并创建tempfile
File f = File.createTempFile("tmp", "yourformat(.txt)", new File("C:/"));
// deletes file when the virtual machine terminate
f.deleteOnExit();
创建临时文件以下载用户,并在退出时自动删除。