1 回答

TA貢獻1841條經驗 獲得超3個贊
在這個簡單的測試中,maxBodyLength 似乎對我有用,我將數據上傳到本地 Express 服務器。如果我嘗試上傳超過 maxBodyLength 的內容,我會收到與您相同的錯誤。所以我懷疑還有更多的東西,比如在你的情況下發生的重定向觸發了錯誤。
此處記錄的 axios 問題似乎引用了該問題,它建議將 maxContentLength 設置為 Infinity(正如其他評論者所建議的那樣)。
例如
maxContentLength: Infinity,
maxBodyLength: Infinity
測試代碼如下:
const axios = require("axios");
function generateRandomData(size) {
const a = Array.from({length: size}, (v, k) => Math.floor(Math.random()*100));
return { data: a, id: 1 };
}
async function uploadData(url, size) {
let params = generateRandomData(size);
let stringData = JSON.stringify(params);
console.log(`uploadData: Uploading ${stringData.length} byte(s)..`);
let resp = await axios({
method: 'post',
url: url,
data: stringData,
headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' },
maxContentLength: 100000000,
maxBodyLength: 1000000000
}).catch(err => {
throw err;
})
console.log("uploadData: response:", resp.data);
return resp;
}
uploadData("http://localhost:8080/upload", 10000000);
對應的服務器代碼:
const express = require("express");
const port = 8080;
const app = express();
const bodyParser = require('body-parser')
app.use(bodyParser.json({limit: '50mb'}));
app.post('/upload', (req, res, next) => {
console.log("/upload: Received data: body length: ", req.headers['content-length']);
res.json( { status: 'ok', bytesReceived: req.headers['content-length']});
})
app.listen(port);
console.log(`Serving at http://localhost:${port}`);
添加回答
舉報