http://code.google.com/appengine/kb/java.html#fileforms
告诉您如何做到这一点的文件上传,其中有被救援人员到场多形式的数据进行的。
与非文件数据类似,您可以直接从请求流中读取数据。
你甚至不需要存储文件/输入流。只需将处理的数据吐出到输出响应流中,同时读取输入FileItemStream或请求输入流。
如果您的文件/输入处理需要向前看,请确定向前看的最大距离并将该距离用作缓冲区大小。
进一步修改
为了响应客户端与文件类型,设置响应内容类型或MIME类型。 例如,我已经有动态生成gif,jpgs,xls,cvs等的应用程序。
响应流的来源是您读取的文件还是动态生成的流没有任何区别。因为,即使您的存储文件需要作为响应发送给客户端,您仍可能必须将其转换为响应流并适当地标记内容类型。
对于动态生成的内容,除非需要缓存输出,否则不需要将该文件生成到网页可见位置,然后使用该链接生成新的html页面,并将该html页面发送到浏览器。您不需要用户的浏览器必须刷新自己才能获取该链接。
您只需直接将“文件”与响应流一起发送即可。你可以设计你的GWT客户端来接受“文件”,也许在一个命名框架中,其中命名的框架src url是执行文件动态生成的应用程序。
阅读http://en.wikipedia.org/wiki/Mime-type找到您需要的内容类型。
如果目标客户端的浏览器没有针对响应的内容类型设置内容处理程序,那么它将用作治疗或将其视为文件下载。
我经常使用jsp或jspx来生成动态生成的图表或电子表格。没有涉及存储的文件。在请求正被读取时,响应被写入。我们来看一下jsp页面指令来设置内容类型以在CSV上调用MS Excel。
<%@ page language="java" contentType="application/vnd-ms-excel; charset=UTF-8"
pageEncoding="UTF-8"%>
对于一个servlet,ServletResponse.setContentType(String)
是方法来设置内容类型。
顺便说一句,这个问题没有关于GWT,你应该删除GWT标记。除非你也想问如何在GWT中执行多部分。 – 2012-01-05 02:15:15