我正在尝试将用户照片上传存储在 Google Cloud Storage 中,但在通话时遇到问题:
blobStoreService.createUploadUrl(...)
我需要跟踪与上传文件关联的用户 ID。如果用户的 ID 是 1234,我需要将其作为元数据存储在 Cloud Storage 文件中。
我可以在直接创建 Cloud Storage 文件时添加元数据:
GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
.setBucket("myBucket")
.setKey(key) // path...
.addUserMetadata("userId", "1234");
但我真的很想使用 GAE 提供的 BlobStoreService.createUploadUrl(...) 因为它支持的文件比上面的代码可以处理的更大。是否可以使用 createUploadUrl 指定元数据?或者甚至可以找出创建了哪个谷歌存储密钥/文件名?
更新 我已经从上传回调 serlvet 获得了 blobKey。但是,我找不到将元数据添加到与此 blobKey 关联的Google 存储文件的方法。至少在本地,它认为它是一个 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.