是否可以通过 GWT RPC Servlet 上传文件?
Posted
技术标签:
【中文标题】是否可以通过 GWT RPC Servlet 上传文件?【英文标题】:Is it possible to upload a file via GWT RPC Servlets? 【发布时间】:2012-02-06 13:05:36 【问题描述】:是否可以使用 Google 的 GWT RPC 机制创建文件上传? 现在我正在使用一个简单的 HTTPServlet 和一个从表单中获取地址的 doPost 方法!
是否可以通过 GWT 的 FileUpload Widget 将 XML 文件上传到 RPC 服务并使用文件的内容(无需 gwtupload 等库的帮助)?
BR; 我的贝克
【问题讨论】:
【参考方案1】:实际上,正如您提到的,使用 gwtupload 和通过 gwt-rpc 上传文件有两种方法,由于浏览器的安全性,这种方法有点困难。要使用 gwt-rpc 实现,您应该在继承 RemoteServiceServlet
的服务实现中覆盖 service(final HttpServletRequest request,HttpServletResponse response)
方法。
对于客户端,你应该有这样的代码:
final FormPanel formPanel = new FormPanel();
formPanel.setAction(GWT.getModuleBaseURL()+”fileUpload”);
formPanel.setEncoding(FormPanel.ENCODING_MULTIPART);
formPanel.setMethod(FormPanel.METHOD_POST);
在service
方法中,您可以使用using FileUpload 获取文件,并且不要忘记在您的web.xml 中注册fileupload url 模式以及在继承RemoteService
的服务接口中注册@RemoteServiceRelativePath("path")
。祝你好运!
【讨论】:
是最终版本。无法覆盖。 ` @Override public final void processPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException, SerializationException `【参考方案2】:这是可能的,但并不那么容易。首先,您需要能够从客户端代码中读取文件。大多数浏览器都支持 FileReader API,但不支持all。因此,对于 Internet Explorer,您将不得不使用闪存或其他插件技术来访问文件。
此外,默认情况下,GWT 中的文件读取器 API 没有绑定,因此您必须自己完成。
接下来您将通过 GWT -RPC 以 Base64 编码字符串的形式发送文件,并且您必须在服务器端进行解码。因此,如果您的用户开始上传大量大文件(大约 20 mb),您可能会遇到一些内存问题。
【讨论】:
以上是关于是否可以通过 GWT RPC Servlet 上传文件?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以以编程方式更改 GWT RPC servlet 路径?
RPC 的 GWT Servlet 模型是单线程模型,还是如何通过 GWT 实现高可用性?
GWT Servlet 错误 com.google.gwt.user.client.rpc .StatusCodeException: Tomcat 服务器上的 404