Java 文件上载到AppEngine Blobstore

Java 文件上载到AppEngine Blobstore,java,google-app-engine,gwt,Java,Google App Engine,Gwt,下面介绍如何上传到Blobstore。它显示了通过JSP+Servlet方法进行上传 因为我的应用程序是基于GWT的,所以我需要为GWT RPC(而不是JSP)改编 因此,在我的应用程序RPC服务实现中: public class MyServiceImpl extends RemoteServiceServlet implements MyService { public String getUploadUrl() { BlobstoreService blobstore

下面介绍如何上传到Blobstore。它显示了通过JSP+Servlet方法进行上传

因为我的应用程序是基于GWT的,所以我需要为GWT RPC(而不是JSP)改编

因此,在我的应用程序RPC服务实现中:

public class MyServiceImpl extends RemoteServiceServlet implements
    MyService {

  public String getUploadUrl() {
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
    return blobstoreService.createUploadUrl("/upload")
  }
}
public class MyServiceImpl extends RemoteServiceServlet implements
    MyService {

  public String getUploadUrl() {
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
    return blobstoreService.createUploadUrl("/upload")
  }
}
这是正确的方法还是有其他方法可以正确地做到这一点?我还没有尝试过这个代码

将上载的二进制文件的最大范围从字节到2MB

下面介绍如何上传到Blobstore。它显示了通过JSP+Servlet方法进行上传

因为我的应用程序是基于GWT的,所以我需要为GWT RPC(而不是JSP)改编

因此,在我的应用程序RPC服务实现中:

public class MyServiceImpl extends RemoteServiceServlet implements
    MyService {

  public String getUploadUrl() {
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
    return blobstoreService.createUploadUrl("/upload")
  }
}
public class MyServiceImpl extends RemoteServiceServlet implements
    MyService {

  public String getUploadUrl() {
    BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
    return blobstoreService.createUploadUrl("/upload")
  }
}
这是正确的方法还是有其他方法可以正确地做到这一点?我还没有尝试过这个代码

将上载的二进制文件的最大范围从字节到2MB

当我尝试此代码时,这是服务器端控制台日志:

May 07, 2012 6:35:53 AM com.google.appengine.tools.development.LocalResourceFileServlet doGet
WARNING: No file found for: /crossdomain.xml
然后,在客户端GWT.log上,Rpc能够生成URL,但无法工作:

[INFO] [blobrpc] - Success fetch upload url: http://127.0.0.1:8888/_ah/upload/aglub19hcHBfaWRyGwsSFV9fQmxvYlVwbG9hZFNlc3Npb25fXxgDDA
createUploadUrl()
创建一个Url,该Url需要一个内容类型为header的HTTP POST
multipart/form data


如果您想使用GWT-RPC,而不是在服务器端创建文件所需的。如果我们要将文件发布到该URL,它将保存在blobstore中。但是请注意,本地开发web服务器的默认URL为,而blobstore生成的URL为http://:8888/。这将导致以后出现问题,因为出于安全原因,Plupload将无法将文件发布到另一个域。这只发生在本地开发服务器上,发布的应用程序将只有一个URL。通过在Eclipse中编辑运行配置,将-bindAddress添加到参数中来修复它。这将导致本地开发服务器将web应用托管在http://:8888/上。您可能需要在GWT浏览器插件中允许它在此更改后加载应用程序


我明白了,但是如果我使用FormElement form=Document.get().createFormElement();form.setAction(url_from_rpc);这有效吗?或者应用程序会因为这种方法而遇到一些会话问题?我在Blobstore FileService API的帮助下编写了一个工作代码,不过我需要编写一些处理流文件上传的方法。感谢您的提示。
gwtupload
project对GAE提供了一些服务器端支持,包括流媒体: