客户代码:
var xhr = new XMLHttpRequest();
xhr.open('POST', '/frame', true);
xhr.send(blob);
服务器代码:
app.use(bodyParser.urlencoded({extended: false,limit: '50mb'}));
app.post('/frame', function (req, resp) {
console.log(req.body);
});
这给PayloadTooLargeError:添加了太多参数
xhr.setRequestHeader('Content-type','application/x-www-form-urlencoded');
无法解决问题。还有其他想法吗?
假设您的blob变量不是真正的url编码表单数据,而仅仅是任何形式的内容。然后,在服务器端,您可以只读取请求流的传入流。请记住,事件处理程序req
上的变量http.Server.request
是可读的流。这将消除body-parser
中间件施加的任何大小限制。保留原始客户端代码,然后保留服务器代码为:
// app.use(bodyParser.urlencoded({extended: false,limit: '50mb'}));
app.post('/frame', function (req, resp) {
req.on('readable', function(){
console.log(req.read());
});
});
如果内容太大,则处理流式处理请求是一个好主意,即使对于结构化数据也是如此。例如,在过去,当我将body-parser#json
中间件与大json请求一起使用时,我遇到了性能问题,并解决了删除body-parser#json
中间件并使用oboe解析流输入的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句