Как лучше загружать файлы на сервер?

178
07 января 2019, 03:20

Занимаюсь разработкой веб-приложений уже около года. Загрузку файлов на сервер, например, при регистрации в системе, делал таким образом, что аватарка пользователя загружалась вместе с его данными(имя, username, пароль). То есть в form-data у меня отправляется 4 поля, объектом одного из которых является файл. Но есть вариант реализовать под загрузку каких-либо файлов на сервер отдельный запрос, который в ответ будет отдавать условный идентификатор файла на сервере, тогда при регистрации будет отправляться 2 запроса: отправка основных данных и отправка файла аватара пользователя. Собственно сам вопрос: какой из 2-х вариантов лучше и практичнее?

Answer 1

Оба варианта имеют право на жизнь. Все зависит от ситуации.

  1. Если у Вас изображения могут быть загружены на сервер только в одном месте (например, при регистрации), но нет большого смысла выносить отправку запроса в отдельный.

  2. Если у Вас изображения могут быть загружены из разных мест (при регистрации, при создании поста и т.п.), то имеет смысл создать отдельный endpoint, куда посылать запросы чисто для загрузки изображения. В ответ приходит id/ссылка на картинку, которую уже можно передавать со вторым запросом.

На всех проектах, где мы разрабатывали api, был использован второй способ.

Еще пару советов:

  • Ссылку на изображение формировать динамически в nodejs, а в базе хранить только путь до изображения (или имя). В таком случае при смене домена ничего не придется делать дополнительно.

  • Если это не сайт с фотографиями, все изображения можно сжимать. Изображения будут выглядеть очень близко к оригиналам, но будут весить до 2х раз меньше. Это выгодно и для сервера (меньше места будут занимать на диске) и для клиента (меньше грузить)

READ ALSO
Максимальное значение строки mysql

Максимальное значение строки mysql

Какое максимальное значение может быть в строке mysql? Например (name VARCHAR (??????????)

178
Помогите кодом для автозаполнения

Помогите кодом для автозаполнения

Создаю базу и стандартных функций не достаточноХочется авто заполнение реализовать

144
Режим MySQL “NO_ENGINE_SUBSTITUTION”, что это такое?

Режим MySQL “NO_ENGINE_SUBSTITUTION”, что это такое?

Что значит режим MySQL NO_ENGINE_SUBSTITUTION?

175