Node JS | Как проверить существование файла на сервере?

Перед чтением какого-либо файла из директории на сервере при помощи Node JS мы хотим предварительно проверять его существование. Мы хотим получать ИСТИНУ (true) или ЛОЖЬ (false).

Зачем нужно проверять существование файла на сервере?

Если файл не будет существовать на сервере, то это может привести к ошибке чтения несуществующего файла. В результате вся программа может перестать работать, или перестанет работать отдельный модуль, или перестанет работать отдельная функция. Этих «или» может быть много и все они разные.

 

Модуль File System — fs

В Node JS есть модуль File System (fs), который помогает работать с файловой системой нашего приложения — помогает работать с файлами и папками.

 

Метод existsSync ( path )

Метод existsSync принимает один параметр path. При вызове он возвращает true, если путь существует, иначе false — если путь НЕ существует. «ПУТЬ» — это папка или файл.

Параметр может быть в трёх видах:

  • Строка (string)
  • Буффер (Buffer)
  • Унифицированный Локатор Ресурса (URL)

Пример кода модуля, который отвечает строкой с логическим true или false на проверку существования картинки «/img/sipo-60.jpg» на сервере

// Подключаем встроенный модуль файловой системы
const fs = require('fs')

// Экспортируем из модуля функцию, которая принимает объекты ЗАПРОСА и ОТВЕТА
module.exports = function test(req, res){

   // Создаём блок отлова возможных ошибок
   try {

      // Код ответа сервера устанавливаем в 200
      res.statusCode = 200;

      // Добавляем нашему ответу заголовок типа контента и его кодировки для отображения русских символов
      res.setHeader('Content-Type', 'text/html; charset=utf-8');

      // Отдаём в ответе строку HTML-разметку
      res.end(`<h2>Картинка есть или нет на сервере? ${fs.existsSync(__dirname + "/img/sipo-60.jpg")}</h2>`);
   } catch (error) {
      res.statusCode = 502;
      res.setHeader('Content-Type', 'text/html; charset=utf-8');
      res.end(`<h1>Ошибка обработки</h1><p>${error}</p>`);
   }
}

Этот код будет работать даже если файла не будет существовать на сервере.

 

Информационные ссылки

Стандарт Node JS — Раздел «fs.existsSync(path)» — https://nodejs.org/api/fs.html#fs_fs_existssync_path

Поделись записью