Skip to content

syurov/spring-rest-file-upload

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Задание

Реализовать простое REST API с одним единственным методом, который загружает изображения.

Требования:

  • Возможность загружать несколько файлов.
  • Возможность принимать multipart/form-data запросы.
  • Возможность принимать JSON запросы с BASE64 закодированными изображениями.
  • Возможность загружать изображения по заданному URL (изображение размещено где-то в интернете).
  • Создание квадратного превью изображения размером 100px на 100px.

Реализация

Проект реализован на Spring Boot и для удобства написана простая html страница для того, чтобы можно было вызывать REST метод.

Приложение разбито на слои API, бизнес логика (service). (DAL-а нет)

Реализацию я разбил на два контроллера. Первый FileUploadController, в нем реализована сама задача. Второй FileDownloadController, в нем реализованы вспомогательные методы, такие как возвращает список изображений, которые уже загружены на сервер и скачивание данных изображений.

На вход целевого метода подается три вида аргументов, первый это список файлов, второй JSON, в коором находится список файлов в BASE64 кодировке и url по которому сервер должен скачать картинку сам.

Задача обработки разного вида аргументов разбивается на этапы по паттерну Visitor, каждый из которых отвечает за свой тип аргумента. Одновременно с сохранением изображения, на сервере создается файл превью 100х100px с именем 'имя файла'_thumbnail, этот файл появляется в списке всех загруженых изображений.

Поведение метода: если при загрузке одного файла произошла ошибка, то все предыдущие хорошо загруженные файлы удаляются

Структура проекта

  • pom.xml - главный pom файл проекта | server - серверная часть проекта | load-app - модуль приложения Spring, содержит точку входа в приложение и базовые конфигурационные файлы load-api - модуль слоя контроллеров REST-API load-service - модуль бизнес логики load-common - модуль содержит общие интерфейсы бизнес логики, а также DTO объекты

    Проект реализован на SPRING Boot 2.0.5.RELEASE, написаны unit тесты и интеграционные тесты

BUILD :java_version: 1.8 Для сборки необходимо выполнить mvn clean install

RUN

Для запуска приложения необходимо запустить
  В IDE - com.easy.upload.application.Application
  Командной строкой:
  java -jar load-app-0.1.0-SNAPSHOT.jar com.easy.upload.application.Application

После запуска можно открыть страницу по умолчанию http://localhost:8080/

About

Project for upload files on spring rest-api

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors