Концепция потоковой передачи:
- Обслуживайте большие файлы частями, а не загружайте их полностью в память.
Пример реализации:
const fs = require('fs');
app.get('/download', (req, res) => {
const stream = fs.createReadStream('largefile.zip');
stream.pipe(res);
});
С поддержкой диапазона:
app.get('/video', (req, res) => {
const range = req.headers.range;
const file = 'video.mp4';
const stats = fs.statSync(file);
const [start, end] = parseRange(range, stats.size);
const stream = fs.createReadStream(file, { start, end });
res.writeHead(206, { 'Content-Range': `bytes ${start}-${end}/${stats.size}` });
stream.pipe(res);
});
Итог
Ключевой вывод для интервью: Опишите, как передавать большие файлы с сервера Node.js.