Node后端如何接受前端上传的Blob形式的数据呢

前端代码:

let formData = new FormData();
formData.append('upload', file.files[0]);
...
xhr.send(formData)

后端代码:用formidable这个npm包是可以正常接收到的

我上面那样写是可以正常传输的,问题是:
我前端用Blob的形式传输数据时,后端就不能接收了,请问我后端该怎么写呢?类似这个同学遇到的问题:类似问题,谢谢各位!

前端Blob形式传输代码:

function upload(blobOrFile) {
    var xhr = new XMLHttpRequest();
    xhr.open('POST', '/upload');
    xhr.onload = function (e) {
        console.log("test...");
    };
    xhr.send(blobOrFile);
}

document.querySelector('input[type="file"]').addEventListener('change', function (e) {
    let data = this.files[0];
    upload( new Blob([data]) );
}, false);

后端报错信息:

Error: bad content-type header, no content-type
    at IncomingForm._parseContentType (C:\Users\Kang\Desktop\upload-component\node_modules\_formidable@1.2.1@formidable\lib\incoming_form.js:260:17)
阅读 7.8k
3 个回答

formData的话,后端需要按照multipart/form-data来解析
直接blob的话,直接接收就好了

formData用formidable可以接受的,直接接收怎么接受呢?

后端可以创建一个可写流,通过管道来获取:

app.post("/file",(req,res) => {
    var ws = fs.createWriteStream("./index.png", { encoding: "binary" });
    req.pipe(ws);
    res.status(200).send(1);
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进