我有一个应用程序,可以让用户保存在blobs商店的blobs。我现在有一个这样做的模式,但我感兴趣的是一些更简单、更不扭曲的东西。就上下文而言,想象一下我的应用程序允许用户上传动物的图片,其中有一段描述动物在做什么。
当前模式
paragraph和name保存在实体Animal中。注意: Animal实体实际上有4个字段( name、paragraph、BlobKey和blobServingUrl作为字符串)。但是端点api只允许保存上面提到的两个。name和paragraph后,进行以下调用以生成blob服务url,而我的端点方法则返回给调用方。
@ApiMethod(name = "saveAnimalData",httpMethod = HttpMethod.POST)公共字符串saveAnimalData(AnimalData请求)抛出异常{.BlobstoreServiceFactory.getBlobstoreService();字符串url = blobstoreService.createUploadUrl("/upload");返回url;}DefaultHttpClient()。注意:在保存了图像后,blob商店用blob键调用了我的应用程序引擎服务器,并提供了url。public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException )从blobstore (名为my url)读取响应。在servlet中,我将BlobKey和blobServingUrl放入关联动物的Animal实体中。(我把一些元数据传递给了some商店,我用它作为标记来识别相关的动物实体)。所需的模式
这就是你的回应。至关重要的是,我希望消除java,并将整个api限制在google云端点上。所以我的问题是:如何使用我的端点来执行步骤3和步骤4?
因此,我们的想法是在发送paragraph和name数据的同时,将图像字节发送到端点方法name。然后在端点方法中,将图像发送到then存储,然后将BlobKey和blobServingUrl持久化到我的实体Animal中。
您的响应必须是java。谢谢。
发布于 2014-04-08 08:43:58
我在这里看到两个问题:
BlobStoreService更简单的存储blobs的过程?这取决于你的图像大小。如果将用户限制为< 1MB文件,则只需将图像存储为Blob实体的Animal属性即可。它可以让你绕过BlobStoreService管道。请参阅:https://developers.google.com/appengine/docs/java/datastore/entities?hl=FR
此解决方案仍然取决于Cloud如何将多部分文件作为原始byte[]处理.
2009年,我们在GWT + Google上遇到了同样的问题,当时还没有发布BlobStoreService。
GWT和Cloud接口有一些相似之处,对我们来说是不可能的。我们必须创建一个普通的HTTP,并使用流多部分文件解析器,因为Apache的HTTP中的解析器使用的是文件系统。
https://stackoverflow.com/questions/22153910
复制相似问题