Форум программистов, компьютерный форум, киберфорум
Node.js
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/50: Рейтинг темы: голосов - 50, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 10.07.2022
Сообщений: 5

Получение файлов на фронт (ReactJS) с бэка (NodeJS)

19.09.2022, 20:39. Показов 10533. Ответов 7

Студворк — интернет-сервис помощи студентам
Все добрый день!
Я использую стек MERN. Столкнулся со следующей задачей - мне необходимо иметь возможность отправлять с фронта на бэк файлы (в основном картинки) и получить их позже обратно при запросе. Функционал получения бэком файлов я реализовал, однако хотел бы проконсультироваться с опытными людьми, как мне вытащить файлы уже с бэка. Мне нужно, чтобы фотографии загружались с бэка при загрузки страницы и отображались как backgroundImage у определенных блоков.

Я предположил, что можно на этапе получения бэком фотографий сериализовать их (например, перевести в base64) и в MongoDB записать уже их в сериализованном виде, потом на фронт получать эти данные, дессериализовывать их и отрисовывать.

Что думаете по этому поводу? Может у кого-то есть способ получше?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.09.2022, 20:39
Ответы с готовыми решениями:

Скачивание файлов на локальный компьютер через браузер в ReactJS
Здравствуйте! Не могу понять, почему с сервера на локальный компьютер через браузер скачиваются только файлы *.png (другие расширения,...

FTP: получение списка файлов из потока. Как вывести список файлов из директории?
доброго времени суток. пытаюсь написать свой FTP-клиент. отправил серверу команду LIST, и в ответ он выдал "ок. успешно" ...

Сборка фронта и бэка
Доброго времени суток, у меня есть проект с фронтом и бэком, фронт написан на чистом html+css+js, а бэк на NodeJs express. Вопрос состоит в...

7
Эксперт JS
 Аватар для DrType
6553 / 3624 / 1075
Регистрация: 07.09.2019
Сообщений: 5,877
Записей в блоге: 1
19.09.2022, 21:03
Можно просто складывать файлы изображений в папочку, находящуюся в пределах папки статических файлов.
0
0 / 0 / 0
Регистрация: 10.07.2022
Сообщений: 5
19.09.2022, 22:40  [ТС]
Если вы имеете ввиду хранение на сервере, то я уже это сделал, но мне это ничего не дает в данный момент. На части фронта изображения будут часто сменять друг друга, поэтому я не могу обращаться каждый раз на бэк по ссылке за фотографией тк будет загрузка постоянно. Я полагаю, что преобразовать все изображения в base64 пока что самый оптимальный вариант.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3833 / 1677 / 431
Регистрация: 14.03.2022
Сообщений: 4,231
19.09.2022, 23:03
Цитата Сообщение от Alastorial Посмотреть сообщение
Я полагаю, что преобразовать все изображения в base64 пока что самый оптимальный вариант.
Тогда зачем спрашиваешь про другие альтернативы?
0
0 / 0 / 0
Регистрация: 10.07.2022
Сообщений: 5
19.09.2022, 23:35  [ТС]
Пока что самый оптимальный среди названных*
У тебя есть другое предложение?
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3833 / 1677 / 431
Регистрация: 14.03.2022
Сообщений: 4,231
20.09.2022, 08:48
Цитата Сообщение от Alastorial Посмотреть сообщение
У тебя есть другое предложение?
Мы складываем файлы в "паблик"... В БД хранятся только их имена.

Если ты считаешь что из БД фронт получит картинку быстрее чем инет-сервер ее отдаст из паблика - так ты ошибаешься.
Твой вариант будет работать медленнее.
0
0 / 0 / 0
Регистрация: 10.07.2022
Сообщений: 5
20.09.2022, 12:10  [ТС]
Я планировал подгрузить все необходимые картинки для текущей страницы с бд при открытии страницы и хранить их base64 представления на фронте. Тогда мне не нужно будет при смене backgroundImage определенных блоков делать очередной запрос на получение картинки с бд, или как ты предлагаешь, с сервера. В моем случае, у меня есть блок, который так настроен, что при ведении мышкой и ее попадании в определенные области блока - у меня будет меняться фотография бэкграунда этого блока. Если у пользователя будет плохой инет, то картинки не будут быстро сменяться, поэтому мне нужно сразу все необходимое подгрузить на фронт, чтобы не приходилось постоянно делать запросы на бэк. Как я уже сказал ранее, мне нужно получить все необходимое сразу, я придумал для этого кодировать все файлы в base64, мой вопрос заключался в том, есть ли какие-либо другие способы передать все изображения с бэка на фронт сразу.
0
Эксперт JSЭксперт HTML/CSS
 Аватар для krvsa
3833 / 1677 / 431
Регистрация: 14.03.2022
Сообщений: 4,231
20.09.2022, 12:41
Лучший ответ Сообщение было отмечено Alastorial как решение

Решение

Цитата Сообщение от Alastorial Посмотреть сообщение
мне нужно сразу все необходимое подгрузить на фронт
Дык!
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
document.addEventListener("DOMContentLoaded", () => {
    const images = new Array();
 
    function preloadImages(...images) {
        images.forEach((image, i) => {
            image = new Image();
            image.src = preloadImages.arguments[i];
        });
    };
 
    // Предварительная загрузка нужных картинок
    preloadImages(
        "{Изображение}.png",
        "{Другое изображение}.jpg"
    );
});
https://only-to-top.ru/blog/co... tinok.html
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.09.2022, 12:41
Помогаю со студенческими работами здесь

Реализация алгоритма Кируса-Бэка
Реализую алгоритм Кируса-Бэка.Необходимо экранной плоскостью обрезать отрезок. Вот код. using System; using...

Ищу бэка PHP + GO, удаленно, gambling, до 180 т.р
Back-end Developer (php + go) Формат работы: удаленная работа, fulltime Зп: до 180 000 рублей В игровой проект ищу Middle Backend...

При нажатии на копку должна выполняться функция из бэка
Подскажите пожалуйста есть кнопка на vue js, есть функция на c#, подскажите, как сделать чтобы при нажатии на кнопку срабатывала функция

Получение имён файлов
в корневом катологе сайта есть ещё каталог картинками! имя каталога содержиться в переменной! как мне получить список имён файлов которые...

Получение файлов из директории
Здравствуйте, делал заполнение айтемов комбобокса файлами одного типа string files = Directory.GetFiles(path, "*.txt"); ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Логарифм записывается как: (x-2)log(x^2+2) - означает логарифм (x^2+2) по основанию (x-2). Унарный минус обозначается как ! */ #include <iostream> #include <stack> #include <cctype>. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru