如何解决Firebase函数多部分/表单数据错误
我的网页提供了将pdf转换为图像的功能。
对于网页,我正在使用Firebase托管;对于功能,我正在使用功能。
但是文件上传功能在Firebase仪表板Boundary not found
中记录了错误
以下是我用于上传html文件的代码:
function uploadFile() {
var file = document.getElementById("file_input").files[0];
var pass = document.getElementById("pass").value;
console.log(file + pass);
var formdata = new FormData();
formdata.append("file",file);
formdata.append("password",pass);
var ajax = new XMLHttpRequest();
ajax.upload.addEventListener("progress",progressHandler,false);
ajax.addEventListener("load",completeHandler,false);
ajax.addEventListener("error",errorHandler,false);
ajax.addEventListener("abort",abortHandler,false);
ajax.open("POST","/upload");
ajax.setRequestHeader("Content-Type","multipart/form-data");
ajax.send(formdata);
}
这是功能代码:
var functions = require('firebase-functions');
var process;
var Busboy;
var path = require('path');
var os = require('os');
var fs = require('fs');
exports.upload = functions.https.onRequest((req,res) => {
const busboy = new Busboy({ headers: req.headers });
const fields = {};
const tmpdir = os.tmpdir();
const uploads = {};
const fileWrites = [];
var pass = '';
busboy.on('file',(fieldname,file,filename) => {
console.log(`Processed file ${filename}`);
const filepath = path.join(tmpdir,filename);
uploads[fieldname] = filepath;
const writeStream = fs.createWriteStream(filepath);
file.pipe(writeStream);
const promise = new Promise((resolve,reject) => {
file.on('end',() => {
writeStream.end();
});
writeStream.on('finish',resolve);
writeStream.on('error',reject);
});
fileWrites.push(promise);
});
busboy.on('field',function (fieldname,val,fieldnameTruncated,valTruncated,encoding,mimetype) {
pass = val;
});
busboy.on('finish',function () {
console.log('Done parsing form!');
console.log(pass);
console.log(uploads);
process.processCard(uploads['file'],pass,2).then((s) => {
res.end(`
<!DOCTYPE html>
<html>
<body>
ImageConverted!!
<img src="data:image/jpeg;base64,${s}" width="90%"></img>
</body>
</html>
`);
}).catch((err) => { res.end('Error: ' + err) });
});
busboy.end(req.body);
});
我在做什么错了?
解决方法
对于多部分主体,建议使用req.rawBody
代替req.body
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。