以下转换是否适用于从Java servlet转换为Google app-engine云端点?
这
public void doPost(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException { … }
要
@ApiMethod(name = "save_blob_key", path = "save_blob_key" httpMethod = HttpMethod.POST)
public void saveBlobKey(HttpServletRequest req) throws IOException { … }
背景:
我正在尝试使用端点来处理blobstore回调。
参考:https://developers.google.com/appengine/docs/java/blobstore/overview#Complete_Sample_App
问题:
这里的重大提示是以下两行似乎需要类HttpServletRequest
,我不知道是否可以将它传递给端点。
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
Map<String, List<BlobKey>> blobs = blobstoreService.getUploads(req);
编辑:
我一直在尝试很多路线来解决这个问题。我的最新信息是combining blob servlet with endpoint api。我仍然无法使代码工作。因此,赏金给任何提供解决方案的人或实际导致解决方案的信息。
答案 0 :(得分:3)
您目前无法使用端点作为blobstore blobstoreService.createUploadUrl
的回调。见related answer。有一个支持mediaUpload的开放功能请求,可能会提供与您想要的功能类似的功能。随意给它加星标以显示支持并获得自动更新。
根据您尝试上传的数据量,我建议使用两种可能的替代方案之一。
如果要上传少量适合数据存储区的blob数据,请在端点中使用ShortBlob
(最多500个字节)或Blob
(最多1 MB)类型实体类。端点将处理后端的序列化,并通过客户端库期望(并发回)base64编码的字符串。这是一种非常简单,直接的方法。
如果要提供大于1 MB的blob,请立即使用Google Cloud Storage JSON API。此API使用与端点相同的客户端库,因此您不必担心将另一个库与应用程序捆绑在一起。 This page有一个使用Java客户端库将blob插入Google云端存储的示例。