前端上传非FormData格式的文件,node怎么接收处理
最近遇到一个需求,大文件上传,一开始使用FormData的格式上传,后台(go大佬)嫌弃解释时间太长,要求换成 octet-stream的格式?! 我懵了许久,以前一直没听说过啊,在网上也没有查到能帮助的资料,然后前端各种修改,最终以前端获取到的 File 对象,直接丢到
$.ajax({
data:File,
contentType:flase,
processData:false
})
然后后台接受到了,速度还挺快。然后我就想使用node来实现一波后台,然后发现用原生的node使用post接受chunk的形式不好使,mutler也不好使,所以请教一下各位有没有这方面的经验或者建议指导学习一下!!!
5 回复
我猜应该是直接HTTP的请求体部分就是文件内容,下面是一份我两年前做微信支付回调时写的代码,在express中直接用,你改改代码试试看 当时用的express是4.15.2
async function readAll(req: Request) {
return new Promise<string>(function (resolve, reject) {
const datas: Buffer[] = [];
req.on('data', function (data) {
if (Buffer.isBuffer(data)) {
datas.push(data);
} else {
datas.push(Buffer.from(data));
}
});
req.on('end', function () {
const str = Buffer.concat(datas).toString();
resolve(str);
});
req.on('error', function (err) {
reject(err);
});
});
}