NodeJS | Как использовать fs.createReadStream()? — efim360.ru

NodeJS | Как использовать fs.createReadStream()?

Функция 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/