Я пытаюсь сохранить загруженные фотографии пользователей в Google Cloud Storage, но у меня возникают проблемы с вызовом:
blobStoreService.createUploadUrl(...)
Мне нужно отслеживать, какой идентификатор пользователя связан с загруженным файлом. Если идентификатор пользователя равен 1234, мне нужно сохранить его как метаданные в файле облачного хранилища.
Я могу добавить метаданные при непосредственном создании файла облачного хранилища:
GSFileOptionsBuilder optionsBuilder = new GSFileOptionsBuilder()
.setBucket("myBucket")
.setKey(key) // path...
.addUserMetadata("userId", "1234");
Но я действительно хочу использовать предоставленный GAE BlobStoreService.createUploadUrl(...), потому что он поддерживает файлы большего размера, чем может обработать приведенный выше код. Можно ли вообще указать метаданные с помощью createUploadUrl? Или даже возможно узнать, какой ключ / имя файла хранилища Google создан?
Обновить У меня уже есть blobKey из серввета обратного вызова загрузки. Однако я не могу найти способ добавить метаданные в файл Google Storage, связанный с этим blobKey. По крайней мере, локально он думает, что это запись 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.