В Node.js. нет класса File
.И нет ничего, что объединяет MIME-тип, содержимое файла и имя файла в объекте класса, который, как вы полагаете, существует для этой платформы.Вам придется использовать разные методы для получения всей необходимой вам информации.
- Существует
fs.readFileSync
, который возвращает вам содержимое файла из файлового дескриптора или пути к файлу. - Существуют
fs.lstatSync
и fs.fstatSync
, которые [синхронно, как и с readFileSync
], дают вам некоторые требуемые атрибуты, в частности, «последнюю модифицированную метку времени» файла.
Не существует определенного приемлемого способа получения MIME-типа файла - даже если некоторые типы MIME для некоторых типов данных стандартизированы, эвристический анализ содержимого обычно применяется для определения MIME-типа файла.Например, для SVG-файла (обычно *.svg
), который также является допустимым XML-файлом, вы должны убедиться, что этот файл можно проанализировать как XML, чтобы определить, что корневой элемент "svg" принадлежитПространство имен SVG, сравнивая объявленный URI пространства имен с известным пространством имен элементов SVG, и затем вы можете утверждать, что файл имеет тип image/svg+xml
MIME.Такой подход - некоторый анализ фактического содержимого файла - будет применяться к любому случаю определения типа MIME, если вы хотите быть уверенным.
Теперь большинство веб-серверов просто используют расширение файла в качествеключ к карте типов MIME - например, все файлы *.gif
, как говорят, имеют тип image/gif
MIME, даже если в них есть мусор или простой текст.Это связано с тем, что ни веб-серверу, ни клиенту обычно не требуется эвристический анализ - если файл, который считается GIF, фактически является мусором, клиент прекратит рендеринг или отрисовку мусора, но ответственность за обеспечение правильности содержимого файла лежит.тот, кто владеет файлом, а не веб-сервером, и последний в любом случае не очень заботится о содержимом, он только обслуживает содержимое, анализируя его на самом деле не его обязанность (не для файлов «активов»)).Однако настоящей причиной является, конечно, производительность - учитывая, что эвристический анализ чаще, чем не дороже, чем просто выбор типа MIME на основе расширения файла, последний метод предпочтительнее.