Я отправляю строку 1.5MB через запрос POST на мой экспресс-сервер, но когда я просматриваю полученные данные, это всего лишь 786 КБ. Строка, которую я отправляю, представляет собой строку изображения base64. Я также попытался изменить пределы multer безрезультатно.Почтовые данные, полученные сервером Express с промежуточным программным обеспечением multer, усекаются
КЛИЕНТ:
function upload(file) {
var form = new FormData(),
xhr = new XMLHttpRequest();
form.append('filename', "imageName.jpg");
form.append('imageData', file);
xhr.open('post', 'http://server/imgdata', true);
xhr.send(form);
}
SERVER:
app.use(multer({
dest: './uploads/',
// WILL RENAME THE RECEIVED FILE
rename: function(fieldname, filename) {
return filename + Date.now();
},
// UPLOAD HAS STARTED
onFileUploadStart: function(file) {
console.log(file.originalname + ' is starting ...')
},
// FILE HAS BEEN RECEIVED AND SAVED
onFileUploadComplete: function(file) {
console.log(file.fieldname + ' uploaded to ' + file.path)
done = true;
},
onFieldsLimit: function() {
console.log('Crossed fields limit!')
}
}));
app.post('/imgdata', function(req, res) {
// THIS IS RETURNS ONLY A PART OF THE DATA
res.json(req.body.image2);
var data = req.body.image2.replace(/^data:image\/\w+;base64,/, "");
var buf = new Buffer(data, 'base64');
// THE IMAGE IS SAVED BUT ONLY THE 786KB OF IT EVERY TIME REGARDLESS
// OF THE SIZE OF DATA SEND
fs.writeFile('image.jpg', buf, function(err) {
if (err) throw err;
console.log('It\'s saved!');
});
})
Почему не просто отправить файл, 'formData' поддерживает файлы изображений напрямую – adeneo
@adeneo это просто доказательство того, что приложение будет делать, это отправка данных с объекта холста. – Manolis
. Multer использует busboy внутри, и смотрит на документация для этого, кажется, размер по умолчанию для текстового поля равен 1 Мб, и по мере того, как вы отправляете это как base64, это просто текст, и вы, вероятно, нажимаете ограничение max fieldSize. – adeneo