将Firebase Storage与Admin sdk node.js一起使用

时间:2019-06-09 03:15:04

标签: node.js firebase firebase-storage firebase-admin

我想通过admin SDK使用Firebase存储,因为使用gcd需要付费帐户。

在没有付费帐户的情况下,我尝试了很多使用gcd的方法,但是除了使用gcd存储空间之外,我没有找到一种方法来实现此目的。

我试图在Firebase文档中找到答案,但是提到的功能文档根本无法使用。 所以我决定发布此问题的答案,以便对其他人有帮助

1 个答案:

答案 0 :(得分:1)

毕竟,我找到了一种使用admin SDK来使用Firebase存储上载和下载文件的方法

首先,您应该安装firebase-admin

  

npm install --save firebase-admin

我不记得您是否必须安装@ firebase / storage

让我们来谈谈代码 首先,您必须启动

var admin = require("firebase-admin");
var firebase = require("firebase");
var serviceAccount = require("path/to/your/private/ket.json");

私钥是从firebaseConsole生成的

  

firebaseConsole->项目设置->服务帐户->生成私钥

现在您可以使用Firebase存储桶

admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
storageBucket: "{storageBucket}"
});
var bucket = admin.storage().bucket();

您可以在{上传文件}按钮旁边找到storageBucket

enter image description here

现在让我们来了解如何将图片上传到名为pic的文件夹中,“您可以在不创建任何子文件夹的情况下使用它”

uploadPic (picName, Picture) => {

db.bucket.upload(Picture.path, {
    destination: "pic/" + picName,
    metadata: {
        contentType: Picture.mimetype,
        cacheControl: 'public, max-age=31536000'
    }
}, (err, file) => {
    if (err) {
        console.log(err);
    } else {
        console.log('done');
    }
    return;
});
};

您需要将所有文件发送到此功能或图片的路径,并进行模仿,还有必要的信息,您也需要发送id,因此如果您搜索它,则可以找到它。

此代码用于获取图片网址

let baseUrl = 'https://firebasestorage.googleapis.com/v0/b/'+'{storageBucket }'+'/o/'+'{folderName}'+'%2F';

getPicUrl (pictureName) => {
db.bucket.getFiles({ prefix: 'pic/' + pictureName}).then((file) => {
    var token = file[0][0].metadata.metadata.firebaseStorageDownloadTokens;
    baseUrl = baseUrl + pictureName+ '?alt=media&token=' + token;
    return;
}).catch((err) => {
    console.log(err.message);
});
return baseUrl;
};

此功能将返回下载URL,您可以使用该URL显示此文件或下载该文件

我所知道的我尽力以最好的方式来解释它,我希望你喜欢它

祝你好运:)