【发布时间】:2011-06-29 02:43:59
【问题描述】:
如果我使用 GWT 文件小部件和表单面板,有人可以解释如何在谷歌应用程序引擎上处理 blobstore 上的上传吗??
【问题讨论】:
标签: gwt file-upload google-cloud-datastore blobstore
如果我使用 GWT 文件小部件和表单面板,有人可以解释如何在谷歌应用程序引擎上处理 blobstore 上的上传吗??
【问题讨论】:
标签: gwt file-upload google-cloud-datastore blobstore
Google blobstore 专门用于通过 http 上传和提供 blob。 Blobstore 服务(使用 BlobstoreServiceFactory.getBlobstoreService() 获得)生成 http post 操作以供您在 html 表单中使用。通过向其发布文件,您可以将您的 blob 上传到 blobstore。当您生成此操作时,您提供了一个处理程序(servlet)的路径,您可以在其中访问上传的 blob 密钥:
Map<String, BlobKey> blobs = blobstoreService.getUploadedBlobs(req);
BlobKey blobKey = blobs.get("data");
请注意,“数据”是表单中的文件字段。您所拥有的只是 blob(您的文件)的密钥。从这里您可以控制 - 您可以保存此密钥以供以后使用和/或立即在页面上提供 blob(使用密钥):
BlobKey blobKey = new BlobKey(req.getParameter("blob-key"));
blobstoreService.serve(blobKey, res);
当然,详情见谷歌documentation。
blobstore 的一个不错的功能是它与 Google Mapper(基本的 map-reduce)服务(正在进行中)集成,让您可以逐行处理作为 blob 上传的文件:http://ikaisays.com/2010/08/
【讨论】:
String uploadUrl = blobstoreService.createUploadUrl("/upload"); out.println("<form action='" + uploadUrl + "' method='post' enctype='multipart/form-data'>"); 其中 /upload 是到我的 servlet 的映射,它处理 blob 保存到 blobstore 之后的事情(答案中的第一个代码 sn-p)。