Skip to content

mayraamaral/spring-boot-file-upload

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Upload de arquivos - Spring Boot

Explicação do projeto

Consiste em uma aplicação simples, que salva um usuário (com nome, e-mail e foto de perfil) no banco.
Para isso, foram usadas duas entidades principais:

  • Usuário (User);
  • Foto de perfil (ProfilePicture).

Formato de um arquivo MultipartFile

Contém:

  • Nome do arquivo (fineName);
  • Tipo do arquivo (contentType);
  • Conteúdo do arquivo (bytes);

Além dos atributos citados acima, contem alguns outros. Porém, nesta aplicação só iremos nos preocupar com esses (nome, tipo e conteúdo).
Por questões de segurança, não foi salvo o nome original do arquivo no banco e sim um nome genérico gerado pelo UUID (picture.setFileName(randomUUID().toString());).

Entidades

  • Usar @Lob e byte[] para o base64 (conteúdo do arquivo - bytes);

Services

  • Devem receber um arquivo do tipo MultipartFile.

Controllers

  • Devem receber @RequestPart MultipartFile como parâmetro no método que declara a requisição;
  • Usar @PostMapping(consumes = {MediaType.MULTIPART_FORM_DATA_VALUE}) na declaração do verbo da requisição;

Estrutura do projeto


📦src
┣ 📂main
┃ ┣ 📂java
┃ ┃ ┗ 📂dev
┃ ┃ ┃ ┗ 📂mayra
┃ ┃ ┃ ┃ ┗ 📂file
┃ ┃ ┃ ┃ ┃ ┣ 📂config
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜OpenApiConfig.java
┃ ┃ ┃ ┃ ┃ ┣ 📂controllers
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserController.java
┃ ┃ ┃ ┃ ┃ ┣ 📂dtos
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProfilePictureDTO.java
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜UserDTO.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserResponseDTO.java
┃ ┃ ┃ ┃ ┃ ┣ 📂entities
┃ ┃ ┃ ┃ ┃ ┃ ┣ 📜ProfilePicture.java
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜User.java
┃ ┃ ┃ ┃ ┃ ┣ 📂repositories
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserRepository.java
┃ ┃ ┃ ┃ ┃ ┣ 📂services
┃ ┃ ┃ ┃ ┃ ┃ ┗ 📜UserService.java
┃ ┃ ┃ ┃ ┃ ┗ 📜FileApplication.java
┃ ┗ 📂resources
┃ ┃ ┣ 📂db
┃ ┃ ┃ ┗ 📂migration
┃ ┃ ┃ ┃ ┣ 📜V1**create_tables_user_and_profile_picture.sql
┃ ┃ ┃ ┃ ┣ 📜V2**alter_table_profile_picture_insert_file_name_field.sql
┃ ┃ ┃ ┃ ┗ 📜V3\_\_alter_table_user_insert_id_profile_picture_field.sql
┃ ┃ ┣ 📂static
┃ ┃ ┣ 📂templates
┃ ┃ ┗ 📜application.properties

Referências

Releases

No releases published

Packages

No packages published

Languages