[英]Node js - How to send request into small chunk of data (Error: request entity too large)
每當我嘗試通過網絡將巨大的Json對象(包含基本圖像)發送到我的Node js服務器時,我都會得到這個
錯誤:請求實體太大
有這樣的解決方案的鏈接 ( 計算器問題 ),其建議增加節點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;
}
這是我的服務器端
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);
}
});
}
如果您需要更多信息,請告訴我! 我正在嘗試找到一種最佳解決方案,即使它不是我建議的解決方案!
感謝您的時間! 祝你有美好的一天!
您是否嘗試過將大型json分成小塊並分別發送? 只需添加一些附加信息,例如{packet:1,total:20,data:...(一小塊大數據)},然后同時通過ajax或一對一地發送它們。 並在節點服務器端收集所有這20件。 另外,您可以擁有一些校驗和。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.