使用`ref()`在Firebase Storage中获取图像的下载URL

问题描述 投票:0回答:1

我正在使用Javascript API将一些图像上传到Firebase存储。我得到的结果对象看起来像这样:

{
  bucket: 'my-bucket',
  contentType: 'image/jpeg',
  ...
  id: 'my-bucket/path/to/image.jpeg',
  mediaLink: "https://www.googleapis.com/download/storage/v1/b/my-bucket/o/path%2Fto%2Fimage.jpeg?generation=123456789&alt=media",
  name: 'path/to/image.jpeg',
  selfLink: 'https://www.googleapis.com/storage/v1/b/my-bucket/o/path%2Fto%2Fimage.jpeg',
  ...
}

如您所见,我得到一个id,一个name和两个链接,它们都以某种方式相关。其中一些路径已编码,一些是相对的,一些是绝对的。

现在,我想使用Javascript API和已登录的用户进行下载。这很好用:

let urlPromise = firebase.storage()
    .refFromURL("gs://my-bucket/path/to/image.jpeg")
    .getDownloadUrl();

但是,我无法使其与ref() API一起使用:

let urlPromise = firebase.storage()
    .ref("path/to/image.jpeg")
    .getDownloadUrl();

[我也尝试了path/to/image.jpegnameid,而不是mediaLinkselfLink),但我总是得到FirebaseStorageError(404)。

.ref()方法中期望使用什么确切参数?

docs也不特定。

编辑:以下是该文件在Firebase控制台中的显示方式的实际屏幕截图:

enter image description here

[如果将Name属性(1997_Ford_Falcon_(EL)_GLi_sedan_(17670566466).jpg_320px-1997_Ford_Falcon_(EL.jpg)传递给ref(),则会得到404。如果使用gs://my-bucket/...路径,则表示ref()无法采用URL。

javascript firebase firebase-storage
1个回答
0
投票
您没有传递文件的完整路径。您现在正在传递的内容:

1997_Ford_Falcon_(EL)_GLi_sedan_(17670566466).jpg_320px-1997_Ford_Falcon_(EL.jpg

缺少路径的前缀,您可以从屏幕快照中看到它:

upload.wikimedia.org/wikipedia/1997_Ford_Falcon_(EL)_GLi_sedan_(17670566466).jpg_320px-1997_Ford_Falcon_(EL.jpg

请勿传递“ gs”或存储桶的名称。它只是存储桶中对象的路径。

© www.soinside.com 2019 - 2024. All rights reserved.