Firebase getDownloadURL()和getMetadata()多余地发出相同的http请求



我正在使用Firebase Storage Web API来显示我上传到存储桶的几个文件的下载链接。

为了获得下载url,我在引用谷歌云存储对象时调用getDownloadURL()。这会得到url,这很好。我做了一个下载链接。

除此之外,我还在同一引用对象上调用getMetadata()以获得我想在下载链接旁边显示的文件的大小。

我这里的问题是,当查看网络流量时,我看到发出了两个相同的http请求。显然,上述API调用发出完全相同的http请求,这对我来说似乎是浪费网络资源。

http响应看起来像这样:

bucket: "xxx.appspot.com"
contentDisposition: "inline; filename*=utf-8''file.zip"
contentEncoding: "identity"
contentType: "application/zip"
crc32c: "xxx"
downloadTokens: "xxx"
etag: "xxx"
generation: "123"
md5Hash: "xxx"
metageneration: "1"
name: "file.zip"
size: "71192686"
storageClass: "STANDARD"
timeCreated: "2021-01-29T11:00:34.110Z"
updated: "2021-01-29T11:00:34.110Z"
就像我说的。调用getDownloadURL()时得到这个响应,第二次调用getMetadata().时得到这个响应

查看文档,我发现曾经可以直接从元数据获取下载url。但downloadURLs属性已弃用。

我的问题:是否有可能获得文件的url和文件的大小,而不发出相同的api调用两次?我是firebase的新手,我不敢相信这是设计出来的。

你是对的:下载URL过去是在通过Firebase SDK将文件上传到Cloud Storage后自动确定的。

这在几年前进行了更改,需要显式调用来生成下载URL。据我所知,从那时起,再也没有办法在单个API调用中获得下载URL和元数据。

在新版本的Firebase中,您可以使用getDownloadURL()方法来检索Cloud Storage中文件的下载URL。你可以修改你的代码来使用这个方法,而不是以前版本的getDownloadURL()方法。

下面是修改代码的方法:

import {  getDownloadURL } from 'firebase/storage'

最新更新