小编典典

从使用 Cloud Functions for Firebase 上传的文件中获取下载 URL

all

使用 Firebase 功能在 Firebase 存储中上传文件后,我想获取文件的下载 url。

我有这个 :

...

return bucket
    .upload(fromFilePath, {destination: toFilePath})
    .then((err, file) => {

        // Get the download url of file

    });

目标文件有很多参数。甚至一个名为mediaLink. 但是,如果我尝试访问此链接,则会收到此错误:

匿名用户没有 storage.objects.get 访问对象…

有人可以告诉我如何获取公共下载网址吗?

谢谢


阅读 74

收藏
2022-08-05

共1个答案

小编典典

您需要通过@google-cloud/storage NPM 模块使用getSignedURL生成签名
URL。

例子:

const gcs = require('@google-cloud/storage')({keyFilename: 'service-account.json'});
// ...
const bucket = gcs.bucket(bucket);
const file = bucket.file(fileName);
return file.getSignedUrl({
  action: 'read',
  expires: '03-09-2491'
}).then(signedUrls => {
  // signedUrls[0] contains the file's public URL
});

您需要@google- cloud/storage使用您的服务帐户凭据进行初始化,因为应用程序默认凭据是不够的。

更新 :现在可以通过 Firebase Admin SDK 访问 Cloud Storage
SDK,它充当@google-
cloud/storage 的包装器。唯一的方法是,如果您:

  1. 使用特殊服务帐户初始化 SDK,通常通过第二个非默认实例。
  2. 或者,在没有服务帐户的情况下,通过向默认 App Engine 服务帐户授予“signBlob”权限。
2022-08-05