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

发布于 2022-09-06 21:23:36 字数 1038 浏览 19 评论 0

前端代码:

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

烂人 2022-09-13 21:23:36

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

爱*していゐ 2022-09-13 21:23:36

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

多情癖 2022-09-13 21:23:36

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

app.post("/file",(req,res) => {
    var ws = fs.createWriteStream("./index.png", { encoding: "binary" });
    req.pipe(ws);
    res.status(200).send(1);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文