自从 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 .. 谢谢!!