我正在使用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.jpeg
,name
和id
,而不是mediaLink
(selfLink
),但我总是得到FirebaseStorageError
(404)。
.ref()
方法中期望使用什么确切参数?
docs也不特定。
编辑:以下是该文件在Firebase控制台中的显示方式的实际屏幕截图:
[如果将Name
属性(1997_Ford_Falcon_(EL)_GLi_sedan_(17670566466).jpg_320px-1997_Ford_Falcon_(EL.jpg
)传递给ref()
,则会得到404。如果使用gs://my-bucket/...
路径,则表示ref()
无法采用URL。
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”或存储桶的名称。它只是存储桶中对象的路径。