【发布时间】:2019-04-12 04:01:53
【问题描述】:
我正在尝试将图像上传到 Firebase 云功能。我认为我已经阅读了有关此问题的整篇文章,但我无法找到解决方案。
我用过“formidable.IncomingForm()”、“multer”和“busboy”,但没有人在工作。
我明白我必须使用 busboy。我想与这个库分享我的最后一个代码。
app.post('/',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;
// const temp = os.tmpdir();
// var path = temp.writeFileSync(file);
let path=os.tmpdir()+"/"+filename
let p=fs.writeFileSync(path,file)
console.log(path)
var fstream = fs.createWriteStream(path);
fstream.on('finish', function () {
if (--files === 0) {
// 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,
mimeType: mimetype
});
}else{
console.error("err: " + err);
var error = new ErrorResponse(400);
error.errors+=err;
res.json(error);
}
});
}
});
file.pipe(fstream);
})
req.pipe(busboy);
})
此代码在我的本地服务器中成功上传文件,但在 Firebase Cloud 函数中失败。
问题是函数 "busboy.on('file'..." 永远不会执行
【问题讨论】:
-
您想将图像存储在哪里?如果我没有弄错,您正在使用 firebase 函数将图像上传到 firebase 存储。对吗?
-
是的,完全正确!但问题出在 firabase-function 上,因为它没有获取文件。换句话说,函数“busboy.on”永远不会执行
-
是的!只有一张图片
标签: node.js firebase google-cloud-storage google-cloud-functions