Найти файл, не зная расширения
Как используя fs.readFile() можно найти файл, если известно только его название, без расширения?
Например, есть код, ищущий картинку в папке:
fs.readFile(`${process.cwd()}/picture_db/${id}`, (err, data) => {
console.log(data, err);
})
Здесь id равно названию картинки. Выводит ошибку, хотя файл с таким названием явно есть в папке.
Ответы (1 шт):
Автор решения: Ruslan Mart
→ Ссылка
Получить все файлы из папки и пробежаться по ним:
const fs = require('fs');
fs.readdir(`${process.cwd()}/picture_db/`, (err, files) => {
const image = files.find((name) => {
const unescapedId = id.replace(/[\\\/.+*?(){}^$]/g, '\\$&');
return new RegExp('^' + unescapedName + '(?=\\.(png|jpg|jpeg|bmp|gif|svg|webp))$').test(name);
});
console.log(image);
});
или
const fs = require('fs');
fs.readdir(`${process.cwd()}/picture_db/`, (err, files) => {
const image = files.find((name) => {
const nameValue = name.split('.').slice(0, -1);
return nameValue.join('.') === id;
});
console.log(image);
});