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());
).
- Usar @Lob e byte[] para o base64 (conteúdo do arquivo - bytes);
- Devem receber um arquivo do tipo MultipartFile.
- 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;
📦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
- Springboot File Handling- File Upload (Part -1);
- Spring Boot REST API File Upload With JSON Data In Single API Call + @ModelAttribute In Spring Rest API;
- How to Create a Spring Boot REST API for Multipart File Uploads: A Comprehensive Guide;
- Uploading JSON Data and a File to a Spring RESTful Service.