我将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 ???
获取文件答案 0 :(得分:1)
如果您持久并检索了例如String objname
的字符串"/gs/bucketname/819892hjd81dh19gf872g8211"
,则可以将其拆分为“/”(String[] pieces = objname.split("/")
)并在{GcsFileName
的调用中正确使用这些部分{1}}。