node.js - 将 firebase 存储与 Admin sdk node.js 一起使用
问题描述
我想通过使用 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->项目设置->服务帐户->生成私钥
现在您可以使用 Firebase 存储桶了
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
storageBucket: "{storageBucket}"
});
var bucket = admin.storage().bucket();
您可以在 {upload file} 按钮旁边找到 storageBucket
现在让我们来看看如何将图片上传到我的名为 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,您可以使用它来显示此文件或下载它
我所知道的我试图以最好的方式解释它希望你喜欢它
祝你好运 :)
推荐阅读
- javascript - Number(i) 在下面的代码中被传递到函数中。有人可以解释循环在代码中是如何工作的
- javascript - 获取静态函数以返回异步值
- python - 尽管配置,Django 日志配置被忽略
- c# - 在群聊中搜索消息扩展问题
- java - 如何将推断的三元组输入(其他)SHACL 规则?
- compiler-construction - yy 在扫描仪/词法分析器(如 jflex)中的意义
- javascript - Zingchart 通过 java 调用 getimagedata api
- html - 如何正确地将 CSS 链接到 HTML
- debezium - 无法初始化类 io.debezium.connector.oracle.OracleConnectorConfig
- typescript - 如何在 Typescrpt 中表达相互关联的类型层次结构