@atumbochka

Как отправить все файлы из папки на сайт с сервера?

Мне нужно, чтобы при загрузке сайта на нём отображались все mp3-файлы, лежащие в папке, то есть они должны обрести свой src. Если бы я просто отправлял 1 конкретный файл, сделал бы следующим образом:
app.get("/getFile", (req, res) => {
    res.sendFile(path.join(__dirname, "uploads",  "имя файла"));
});

Но в моём случае требуется загрузить все файлы, находящиеся в папке, то есть их имена и количество я не знаю, так как пользователь сам решает, что и в каком количестве ему загружать. Я пробовал сделать следующим образом, например, загрузить последний файл без указания конкретного названия:
const music = fs.readdirSync(path.join(__dirname, "uploads"));
app.get("/getFile", (req, res) => {
    res.sendFile(path.join(__dirname, "uploads", music[music.length - 1]));
});

И это сработало, но опять же, а что делать с несколькими файлами, я же не могу в одном запросе написать сразу несколько res.sendFile, не могу заранее создать несколько запросов, ведь не знаю, сколько будет в папке файлов. Да и это будет глупо, ведь если пользователь загрузит, допустим, 500 файлов, я же не буду 500 get-запросов в файле сервера делать. То есть нужно, чтобы один запрос как-то "выдавал" src нескольким файлам. Надеюсь, моя проблема понятна.
Ещё я пробовал сделать по-другому: post-запрос с сайта присылает номер нужного файла, то есть i в цикле for, и приходит файл с этим номером (только ещё надо 1 отнять), то есть принимать конкретный файл я тоже научился, но главная проблема осталась: как отправить несколько файлов?
Я думаю, что есть какое-то свойство или метод, о котором я не знаю, но вроде как ничего такого не нашёл. Может, кто-то сталкивался с такой проблемой?
  • Вопрос задан
  • 155 просмотров
Решения вопроса 1
black1277
@black1277
Вольный стрелок
Скорее всего вам нужен метод для раздачи статичных файлов:
app.use(express.static(path.join(__dirname, 'public')))

все файлы, лежащие в папке public (можно задать свою) могут быть получены клиентом. Нужно только сформировать список существующих файлов и выдавать их url на фронт.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы