java - 从其 BlobKey 获取 Google Cloud Storage 文件

标签 java google-app-engine blobstore google-cloud-storage

我编写了一个 Google App Engine 应用程序,它使用 Blobstore 来保存以编程方式生成的数据。为此,我使用了 Files API ,不幸的是,它已被弃用,取而代之的是 Google Cloud Storage。所以我正在重写我的助手类以使用 GCS。

我希望界面尽可能与以前相似,这也是因为我将 BlobKeys 保留在数据存储中以保留对文件的引用(并且更改生产应用程序的模型总是很痛苦)。当我将一些东西保存到 GCS 时,我用

检索了一个 BlobKey
BlobKey blobKey = blobstoreService.createGsBlobKey("/gs/" + fileName.getBucketName() + "/" + fileName.getObjectName());

按照规定here ,我将其保存在数据存储区中。

所以问题来了:文档告诉我如何在 servlet 响应中使用 blobstoreService.serve(blobKey, resp); 提供 GCS 文件,但是我如何检索文件内容(如InputStream、字节数组或其他)在我的代码中使用它进行进一步处理?在我当前的实现中,我使用 FileReadChannelAppEngineFile 读取数据(均已弃用)。

最佳答案

下面是将 Google 存储对象作为输入流打开的代码。不幸的是,您必须使用存储桶名称和对象名称,而不是 blob 键

GcsFilename gcs_filename = new GcsFilename(bucket_name, object_name);
GcsService service = GcsServiceFactory.createGcsService();
ReadableByteChannel rbc = service.openReadChannel(gcs_filename, 0);
InputStream stream = Channels.newInputStream(rbc);

关于java - 从其 BlobKey 获取 Google Cloud Storage 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18339168/

相关文章:

java - String.getBytes() 如何将字符串转换为字节?

java - 是否有可能使 Web 应用程序主动而不是被动?

java - Appengine blobstore 作为文件系统的限制和问题

java - 为 Google Cloud Storage 对象生成公共(public)链接

python - AppEngine bulkloader、高复制存储和 python27 运行时

python - BlobReferenceProperty 和 ReferenceProperty 模型设计

java - 为什么我的哈希表不能在更大的范围内工作?

Java:从文件扫描到数组列表,然后最小/最大/平均值/标准偏差

google-app-engine - GAE + Github = 无法让 Push-to-Deploy 实际工作

sql - 从一组范围计算并发性