Javascript Node js-如何将请求发送到小块数据中(错误:请求实体太大)

Javascript Node js-如何将请求发送到小块数据中(错误:请求实体太大),javascript,node.js,ajax,express,request,Javascript,Node.js,Ajax,Express,Request,每次我试图通过网络将一个巨大的Json对象(包含图像base64)发送到我的节点js服务器时,我都会得到这样的结果 错误:请求实体太大 有这样的解决方案(stackoverflow问题)建议增加节点js服务器上的限制。我正在寻找客户端解决方案。有没有办法分解发送的数据,让服务器等待接收所有数据包,然后进行处理?(承诺??) 假设地说,如果我的文件是20mb,即使我的限制设置为5mb,我也可以发送它,这只会花费更多的时间。可能吗?你能把我带到正确的轨道上吗 我在后端使用express 这里有一些代

每次我试图通过网络将一个巨大的Json对象(包含图像base64)发送到我的节点js服务器时,我都会得到这样的结果

错误:请求实体太大

有这样的解决方案(stackoverflow问题)建议增加节点js服务器上的限制。我正在寻找客户端解决方案。有没有办法分解发送的数据,让服务器等待接收所有数据包,然后进行处理?(承诺??)

假设地说,如果我的文件是20mb,即使我的限制设置为5mb,我也可以发送它,这只会花费更多的时间。可能吗?你能把我带到正确的轨道上吗

我在后端使用express

这里有一些代码可供参考:

    //AJAX CALL
    var promise = $.Deferred();
    $.ajax('/module/report/ddl',{
        data: {
            widget: JSON.stringify(widget), <--- large, very large
            filename: filename,
            username: username,
            reportname: reportName
        },
        type: 'POST',
        success: function(result){
            //Do something
            promise.resolve(result);
        },
        error :function(err) {
            /* Act on the event */
            promise.reject(err);
        }
    });
    return promise;
}
//AJAX调用
var promise=$.Deferred();
$.ajax(“/module/report/ddl”{
数据:{

widget:JSON.stringify(widget),您是否尝试将您的大JSON分解成小块并分别发送?只需添加一些附加信息,如{packet:1,total:20,data:…(一小块大数据)}
然后同时通过ajax或逐个发送。在节点服务器端收集所有这20个数据块。此外,您还可以进行一些校验和。

如何使服务器等待接收所有数据包?有没有办法使用express实现这一点?创建一个对象,并将每个异步接收的和平添加到该对象中。以及接收能量和平ase执行检查是否接收到所有和平1)向服务器发出同步请求,以确保文件传输。异步请求不会阻止用户转到其他url并终止您的长上传2)express无需在此处执行任何操作。您可以将JSON.stringify的结果中断一段长度(例如5000000字节),按顺序命名每个块,在服务器上添加(您需要在会话中保存这些块).3)使用标志来知道文件的最后一个区块。如totalChunkCount或lastChunk=true1)因此,我只需在我的ajax调用中添加async:false,对吗?2&3)我对express不熟悉,但我会检查如何将数据存储到用户会话中。当它收到最后一个区块时,它会执行流程,这很有意义,谢谢!是的,你应该使用se我有一个“临时”的工作演示,但我使用的是sync ajax调用,这是不推荐的。我会尽快尝试使用promise发布一个答案。你可以很容易地链接承诺。它们是异步的。这就是方法
   router.route('/ddl').post(ddlReport));
   function ddlReport(req, res){
     var filename = req.body.filename;
     var widgets = req.body.widget; <--- Once again large
     var username = req.body.username;


ctrl.ddlProcess(widgets,filename,title,username,function(err, result){
    if(err){
        res.status(422).send(err);
    }else {
        res.send(result);
    }
});