从 ObjectName 获取 Google 云存储文件

Get Google Cloud Storage File from ObjectName

我正在将我的 GAE 应用程序从已弃用的文件 API 迁移到 Google 云存储客户端库。 我过去常常保留 blobKey,但由于从现在开始对它有部分支持(如指定 here),我将不得不保留对象名称。 不幸的是,来自 GCS 的对象名称看起来或多或少像这样

/gs/bucketname/819892hjd81dh19gf872g8211

如您所见,它还包含存储桶名称

这就是问题所在,每次我需要获取文件进行进一步处理(或在 servlet 中提供它)时,我都需要创建一个 GcsFileName(bucketName, objectName) 实例,它会给我类似

/bucketName/gs/bucketName/akahsdjahslagfasgfjkasd

这(当然)行不通。

所以。我的问题是: - 如何从 objectName 生成 GcsFileName?

更新

我尝试使用 objectName 作为 BlobKey。但它就是行不通:(

InputStream is = new BlobstoreInputStream(blobstoreService.createGsBlobKey("/gs/bucketName/akahsdjahslagfasgfjkasd"));

我得到了通常的答案

BlobstoreInputStream received an invalid blob key

如何使用 ObjectName 获取文件???

如果您坚持并检索了例如字符串 String objname 价值例如 "/gs/bucketname/819892hjd81dh19gf872g8211",您可以将其拆分为“/”(String[] pieces = objname.split("/"))并在调用中适当地使用这些片段至 GcsFileName.