Вопрос проверяет понимание ограничений обычных POST-запросов при передаче больших файлов и знание альтернативных подходов, таких как потоковая передача или чанкование.
Обычный POST-запрос с multipart/form-data загружает весь файл в память сервера перед обработкой. Для больших файлов (сотни мегабайт или гигабайты) это приводит к высокому потреблению памяти, тайм-аутам и блокировке других запросов. Кроме того, при обрыве соединения придётся перезагружать файл целиком.
fs.createReadStream и pipe.const express = require('express');
const multer = require('multer');
const app = express();
// Настройка multer для сохранения в папку uploads
const upload = multer({ dest: 'uploads/' });
app.post('/upload', upload.single('file'), (req, res) => {
// req.file содержит информацию о загруженном файле
console.log(req.file);
res.send('Файл загружен');
});
app.listen(3000);Для больших файлов лучше использовать потоковую обработку без multer, например, с помощью busboy или formidable, которые поддерживают стриминг.
Для небольших файлов (до нескольких мегабайт) обычный POST-запрос подходит. Для больших файлов используйте потоковую передачу или чанкование, чтобы снизить нагрузку на память и обеспечить устойчивость к обрывам соединения. Это особенно важно в чат-приложениях, где пользователи могут обмениваться медиафайлами.
Уровень
Рейтинг:
4
Сложность:
5
Навыки
Node.js
Express
Ключевые слова
Подпишись на React Developer в телеграм
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию