如何通过 Firebase Cloud Functions 中的POST(表单数据)HTTP REST请求存储文件,以便我可以在REST请求后在云中处理,然后存储在存储桶中链接到我的项目。
例如,访问非常容易,但存储不是,我尝试使用 multiparty 和 busboy NodeJS库,但是问题仍在于我无法将其保存在Firebase Storage。
Viewcontroller
答案 0 :(得分:2)
最后我完成了这个解决方案并且工作正常
router.post('/upload', function (req, res) {
var busboy = new Busboy({headers: req.headers});
var files = 0, finished = false;
busboy.on('file', function (fieldname, file, filename, encoding, mimetype) {
console.log('File [' + fieldname + ']: filename: ' + filename);
console.log("Uploading: " + filename);
++files;
var path = temp.writeFileSync(file);
var fstream = fs.createWriteStream(path);
fstream.on('finish', function () {
if (--files === 0) {
var bucket = firebase.bucket();
// Upload a local file to a new file to be created in your bucket.
bucket.upload(path+"",function (err, file) {
if (!err) {
console.log("Uploaded: " + path);
res.json({
uploaded: true,
created_at: new Date().getTime(),
filename: filename,
path: path,
mimeType: mimetype
});
}else{
console.error("err: " + err);
var error = new ErrorResponse(400);
error.errors+=err;
res.json(error);
}
});
}
});
file.pipe(fstream);
});
答案 1 :(得分:1)
从firebase功能访问fireabse / google云端存储的最简单方法是使用节点js google cloud package作为服务,在本例中为@google-cloud/storage。
一旦它成为函数依赖项的一部分,您只需在函数js文件中启动它:
const gcs = require('@google-cloud/storage')();
由于该功能在Google云环境中运行,因此无需提供身份验证信息(除非存储和功能不属于同一Google Cloud / Firebase项目)。