node.js - 通过 Cloud Function 检索 Firebase 存储图像链接

标签 node.js firebase firebase-storage google-cloud-functions

如何通过云功能检索 Firebase 中存储的图像的下载链接?

我已经尝试了各种变体,包括下一个:

exports.getImgs = functions.https.onRequest((req, res) => {
    var storage = require('@google-cloud/storage')();

var storageRef = storage.ref;

console.log(storageRef);

storageRef.child('users/user1/avatar.jpg').getDownloadURL().then(function(url) {

    });
});

最佳答案

这让我很恼火,所以我会把解决方案直接解释给那些正在寻找它的人。

1、使用firebase命令行安装GCD Storage:

npm install --save @google-cloud/storage

云函数代码:

const gcs = require('@google-cloud/storage')({keyFilename: 'service-account.json'});
const bucket = gcs.bucket('name-of-bucket.appspot.com');

const file = bucket.file('users/user1/avatar.jpg');
        return file.getSignedUrl({
          action: 'read',
          expires: '03-09-2491'
        }).then(signedUrls => {
            console.log('signed URL', signedUrls[0]); // this will contain the picture's url
    });

您的存储桶名称可以在 Firebase 控制台的“存储”部分下找到。

可以从这里创建和下载“service-account.json”文件:

https://console.firebase.google.com/project/_/settings/serviceaccounts/adminsdk

并且应该存储在 functions 文件夹下的本地 Firebase 文件夹中。 (或者其他只要改上面代码中的路径即可)

就是这样。

关于node.js - 通过 Cloud Function 检索 Firebase 存储图像链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46795046/

相关文章:

javascript - Angular :无法获取/

node.js - 创建源插件时无法将数据保存在 gatsby graphql 层中

firebase - firestore云函数onCreate/onDelete有时会立即触发两次

Firebase 规则 : is it possible to communicate between security rules of different products

node.js - 更新用户信息 mongoose, MongoDB, NodeJS

javascript - 合并 2 个具有不同值类型的数组

android - 从 Firebase 身份验证获取更新的用户

ios - 尝试检索提供商数据时如何修复 "Cannot call value of non-function type [UserInfo]"?

android - 从控制台编辑 Firebase 文件元数据

firebase - 复制Firebase存储上的文件?