我正在尝试将用户照片上传存储在Google云端存储中,但遇到了调用问题:
blobStoreService.createUploadUrl(...)
我需要跟踪哪个用户ID与上传的文件相关联.如果用户的ID是1234,我需要将其作为元数据存储在云存储文件中.
我可以在直接创建云存储文件时添加元数据:
GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
.setBucket("myBucket")
.setKey(key) // path...
.addUserMetadata("userId", "1234");
但我真的想使用GAE提供的BlobStoreService.createUploadUrl(…),因为它支持比上面这段代码可以处理的更大的文件.是否可以使用createUploadUrl指定元数据?或者甚至可以找出创建了哪个谷歌存储密钥/文件名?
更新
我已经从上传回调serlvet中获得了blobKey.但是,我找不到将元数据添加到与此blobKey关联的Google Storage文件的方法.至少在本地,它认为它是BlobStore条目,而不是GS文件
// get the key:
Map<String, List<BlobKey>> blobKeysFromPost=BlobstoreServiceFactory.getBlobstoreService().getUploads(request);
// pull out the blobKey generated from the recently submitted POST
BlobKey blobKey = ...
// Now how do I access the cloud storage entry for this key? I tried:
AppEngineFile file = FileServiceFactory.getFileService().getBlobFile(blobKey);
// But this file locally returns "blobstore":
file.getFileSystem().getName(); // Should be GS.
最佳答案 我认为这是一个错误,文件上传到谷歌存储有BlobKeys,说他们在BlobStore.在不知道生成的文件名的情况下,我们无法与GS中的上传文件进行交互.例如,我们无法在文件上添加元数据,更改ACL,删除等…
我在GAE跟踪器中打开了这个问题:
http://code.google.com/p/googleappengine/issues/detail?id=8337