我正在将GAE应用程序从不建议使用的File API迁移到Google Cloud Storage客户端库。
我曾经保留过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收到无效的Blob键
如何使用ObjectName获取文件???
最佳答案
如果您坚持并检索了例如值String objname
的字符串"/gs/bucketname/819892hjd81dh19gf872g8211"
,则可以将其拆分为“ /”(String[] pieces = objname.split("/")
),并在对GcsFileName
的调用中适当地使用它们。