最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

如何在nodejs中处理xhr blob post

IT培训 admin 3浏览 0评论

如何在nodejs中处理xhr blob post

客户代码:

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());
  });
});

如果内容太大,即使对于结构化数据,处理流处理请求也是一个好主意。例如,当我使用带有大json请求的body-parser#json中间件并解决删除body-parser#json中间件并使用oboe解析流输入的问题时,我遇到了性能问题。

如何在nodejs中处理xhr blob post

客户代码:

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());
  });
});

如果内容太大,即使对于结构化数据,处理流处理请求也是一个好主意。例如,当我使用带有大json请求的body-parser#json中间件并解决删除body-parser#json中间件并使用oboe解析流输入的问题时,我遇到了性能问题。

与本文相关的文章

发布评论

评论列表 (0)

  1. 暂无评论