从ObjectName获取Google云端存储文件

时间:2015-01-30 11:51:47

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

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

  

/ GS / bucketname / 819892hjd81dh19gf872g8211

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

这就是问题所在,每次我需要获取文件进行进一步处理(或在servlet中提供)我需要创建一个GcsFileName(bucketName,objectName)的实例,它给我一些像< / p>

  

/ bucketName / GS / bucketName / akahsdjahslagfasgfjkasd

(当然)不起作用。

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

更新

我尝试将objectName用作BlobKey。但它不起作用:(

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

我得到了通常的答案

  

BlobstoreInputStream收到无效的blob密钥

如何使用ObjectName ???

获取文件

1 个答案:

答案 0 :(得分:1)

如果您持久并检索了例如String objname的字符串"/gs/bucketname/819892hjd81dh19gf872g8211",则可以将其拆分为“/”(String[] pieces = objname.split("/"))并在{GcsFileName的调用中正确使用这些部分{1}}。