从 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
.
我正在将我的 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
.