Функция fs.createReadStream() позволяет очень просто открыть доступный для чтения поток.
Всё, что вам нужно сделать, это передать путь к файлу, чтобы начать потоковую передачу. Получается, что объекты ответа (как и запроса) являются потоками. Поэтому мы будем использовать этот факт для создания http-сервера, который передаёт файлы клиенту. Поскольку код достаточно прост, его довольно легко просто прочитать и прокомментировать, почему необходима каждая строка.
const http = require(‘http’);
const fs = require(‘fs’);
http.createServer(function(req, res) {
// Имя файла представляет собой просто локальный каталог и привязано к запрошенному URL-адресу.
let filename = __dirname + req.url;
// Эта строка открывает файл как читаемый поток
let readStream = fs.createReadStream(filename);
// Это будет ждать, пока мы не узнаем, что читаемый поток действительно действителен, прежде чем передавать его по конвейеру.
readStream.on(‘open’, function(){
// Это просто передаёт поток чтения объекту ответа (который отправляется клиенту)
readStream.pipe(res);
});
// Это улавливает любые ошибки, возникающие при создании читаемого потока (обычно недопустимые имена).
readStream.on(‘error’, function(err){
res.end(err);
});
}).listen(8080);
Информационные ссылки
Перевод статьи «How to use fs.createReadStream?» — https://nodejs.org/en/knowledge/advanced/streams/how-to-use-fs-create-read-stream/