0

自从 4 天以来,我一直在讨论这个话题。我想将 Google Cloud Storage 中列出的文件下载到我的应用程序中。为了这 :

1) 我在 GAE 中创建了我的应用程序并设置了我的 Google Cloud Storage 项目并创建了我的存储桶。

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。我已经从这个链接下载了云存储 API:https ://code.google.com/p/google-api-java-client/wiki/APIs#Cloud_Storage_API .. 谢谢!!

4

1 回答 1

1

您的报价:

创建新存储桶或列出项目拥有的存储桶时,您必须指定 x-goog-project-id HTTP 标头以识别您正在使用的项目。

这是指列出存储桶。您正在列出存储桶中的对象

如果您要检索存储桶列表,则必须传入项目 ID。buckets.list的参考资料显示了如何做到这一点:

Storage.Buckets.List listBuckets = storage.buckets().list("myproject");
于 2013-08-22T20:29:36.687 回答