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

Как часто вы сталкивались с указанным выше сообщением об ошибке? Загрузка изображений в Интернет полна неприятностей. Вы говорите мне, что я должен выкопать ту старую копию Photoshop, которая у меня валяется, и попытаться изменить размер изображения в соответствии с вашими глупыми стандартами загрузки изображений?

В Confrere мы стараемся быть лучше и создаем сервис на условиях наших пользователей. Это означает, что мы должны взять любой файл, который дает нам пользователь, и разобраться с этим, изменив размер и обработав его до наших стандартов, вместо того, чтобы возлагать эту нагрузку на пользователя.

Но разве это не будет слишком дорого, скажете вы? С сегодняшней вычислительной мощностью и алгоритмами ответ - не то, что вы думаете.

Оставить работу серверу проще, чем вы думаете

Во-первых, отправка больших файлов поставщику облачных услуг из Интернета часто бесплатна, поэтому не имеет значения, насколько большой файл, только то, что ваш сервер может принять его в разумные сроки. Большинство файлов изображений даже в крайних случаях имеют размер менее 50 МБ, что вполне разумно для загрузки (особенно если вы основываете свой сервис на потоковой передаче видео в реальном времени!). Так почему же ваш сервер просто не принимает это и не справляется с этим?

Во-вторых, при использовании современных инструментов изменение размера изображения до требуемых размеров обходится довольно недорого. Существуют даже алгоритмы, которые могут разумно выбирать «интересные» части изображения для обрезки, хотя это, вероятно, лучше оставить на усмотрение пользователя с помощью инструментов внешнего интерфейса.

Наконец, спросите себя, что дороже, несколько дополнительных секунд вычислительной мощности для загрузки изображения, которую пользователь может сделать только один или два раза, или их потеря из-за того, что вы не очень хорошо справились с пользовательским интерфейсом?

Решение - конечно же с открытым кодом

Используя экспресс, мультер и острый, мы создали простой сервер загрузки в узле, который именно это и делает.

  • Разрешите загрузку любого файла изображения любого размера и позвольте заказчику определить желаемый размер и размер изображения.
  • Загрузите полученный файл в S3 и верните URL-адрес вновь созданного изображения.
  • Все это легко развертывается в Elastic Beanstalk или любом другом провайдере.

Мы решили открыть исходный код полученного кода, поэтому зайдите на https://github.com/Confrer/upload-server и попробуйте сами! Мы будем рады вашим отзывам и предложениям, если они у вас есть.