我从4天开始就一直关注这个话题。我想将Google云端存储中列出的文件下载到我的应用中。为此:
1)我在GAE中创建了我的应用程序并设置了我的Google云端存储项目并创建了我的存储桶。
2)现在我想编写一个servlet,列出“mybucket”中的文件并用blob提供它,我将在我的android应用程序中读取(通过Http响应)并保存到SD卡或内存。为此,我收集了一段代码,但我不知道如何将它组合在一起。
我甚至不确定我做得对。非常感谢您的帮助或链接或建议。如果您需要任何进一步的信息,请与我们联系。
将在servlet中实现步骤2)的代码:
Storage.Objects.List listObjects = storage.objects().list("mybucket");
Objects objects;
do {
objects = listObjects.execute();
for (StorageObject object : objects.getItems()) {
// Do things!
}
listObjects.setPageToken(objects.getNextPageToken());
} while (null != objects.getNextPageToken());
BlobstoreService blobstoreService = BlobstoreServiceFactory.getBlobstoreService();
BlobKey blobKey = blobstoreService.createGsBlobKey(
"/gs/"+"androidbucket"+"/"+filename");
blobstoreService.serve(blobKey, resp);
现在关于这段代码片段的问题是“Storage.Objects.List”将如何知道它在哪个项目中寻找“mybucket”?因为我在GAE上的应用程序设置下阅读此行“在创建新存储桶或列出项目拥有的存储桶时,必须指定x-goog-project-id HTTP标头以识别您正在使用的项目。”
编辑:我也无法在“Storage.Objects.List”上编译我的servlet。我已从此链接下载了Cloud Storage API:https://code.google.com/p/google-api-java-client/wiki/APIs#Cloud_Storage_API ..谢谢!!
答案 0 :(得分:1)
你的引言:
创建新存储桶或列出项目拥有的存储桶时, 您必须指定x-goog-project-id HTTP标头 确定您正在使用的项目。
这是指列出存储桶。您正在列表中列出对象。
如果您要检索存储桶列表,则必须传入项目ID。 reference for buckets.list显示了如何执行此操作:
Storage.Buckets.List listBuckets = storage.buckets().list("myproject");