node.js - 将 firebase 存储与管理 sdk node.js 结合使用

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

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

我尝试了很多在没有付费帐户的情况下使用 gcd 的方法,但除了使用 gcd 存储很复杂之外,我没有找到其他方法。

我试图在 firebase 文档中找到答案,但提到的函数文档根本不起作用。 所以我决定发布这个问题的答案,这样可以帮助其他人

最佳答案

毕竟我找到了一种使用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->project Settings->service account ->generate private key

现在您可以使用 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;
});
};

您需要将所有文件发送到此函数或您的图片和 mimetype 的路径,其中有必要的信息,您还需要发送 id,这样如果您搜索它,您就可以找到它。

此代码用于获取图片URL

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,您可以使用它来显示此文件或下载它

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

祝你好运:)

关于node.js - 将 firebase 存储与管理 sdk node.js 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56511711/

相关文章:

android - 错误 : Program type already present: com. google.android.gms.internal.measurement.zzdz

android - Firebase 存储图像被旋转

node.js - req.session.captcha 无法在 Node.js 中的不同端口上工作

node.js - 从 firebase 函数连接到 MongoDB Atlas

php - 适用于 PHP 的 Firebase Admin SDK 是隐藏 Firebase 凭据的有效方法吗?

ios - 在 flutter 中将 application/octet-stream 转换为 image/jpeg/png?

android - 如何在 Android 上显示 Firebase 存储的下载进度

sql-server - 如何使用 nodejs 的 mssql 包调用 SQL Server 标量函数?

node.js - 运行 2 个重复的异步函数,而不在等待时暂停另一个函数

android - 如何从 FirebaseRecyclerAdapter 或 Firebase Reference Android 中排除项目