首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取存储在google-cloud-storage存储桶的子目录中的图像的URL

如何获取存储在google-cloud-storage存储桶的子目录中的图像的URL
EN

Stack Overflow用户
提问于 2019-05-31 03:55:07
回答 1查看 459关注 0票数 1

我将图片存储在google-cloud-storage的存储桶中的目录中。这些图像不能公开查看。据我所知,我可以对图片进行“签名”,生成的URL将在指定的时间内公开可见。然而,到目前为止,我所尝试的一切似乎都不起作用。尝试访问该网址会导致NoSuchKey错误。

下面是我尝试过的代码示例。我传递给BlobInfo.newBuilder的第二个参数到底应该是什么?文档上说应该是object name。这只是文件的名称吗,即myimage.jpg

代码语言:javascript
复制
URL getSignedImageUrl(String uri) {
  // ImageUploadDetails contains metadata about the image
  ImageUploadDetails imageUploadDetails = ImageUploadDetails.findByUri(uri)
  if (imageUploadDetails) {
    BlobInfo blobInfo = BlobInfo.newBuilder(BlobId.of(bucket, imageUploadDetails.thumbnailPath)).build()
    URL url = storage.signUrl(blobInfo, 60, TimeUnit.MINUTES, Storage.SignUrlOption.withV4Signature())
    return url // this URL, when converted to a String, doesn't work
} else {
  throw new ImageNotFoundException("Cannot open file: ${imageUploadDetails.thumbnailPath}")}
}

我希望签名的URL在指定的时间内对公众用户可用。我想将它用作image标记中的src值。

相反,我得到的是:

代码语言:javascript
复制
<Error>
  <Code>NoSuchKey</Code>
  <Message>The specified key does not exist.</Message>
  <Details>
  obfuscated to protect the innocent
  </Details>
</Error>
EN

回答 1

Stack Overflow用户

发布于 2019-05-31 22:00:38

默认情况下,对象的url为https://storage.googleapis.com/${bucket.name}/${blob.name}

例如:

代码语言:javascript
复制
- bucket1
  - folder1
    - image1.jpg  https://storage.googleapis.com/bucket1/folder1/image1.jpg
    - image2.jpg  https://storage.googleapis.com/bucket1/folder1/image2.jpg
- bucket2
  - image3.jpg    https://storage.googleapis.com/bucket2/image3.jpg
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56384815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档