java spring

Spring Boot Rest API image 파일 전송

윤돌_99 2021. 8. 15. 14:40

domain <image class>

import lombok.AllArgsConstrutor
import lombok.Builder
import lombok.Data
import lombok.NoArgsConstructor

@Builder
@AllArgsConstrutor
@NoArgsConstructor
@Data
@Entity
public class Image{

	@Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    private int id;
    
    private Stirng caption;
    private String postImageUrl; //사진을 전송받아서 서버에 특정 폴더에 저장
    // DB에 그 저장된 경로를 insert
    
    @JoinColumn(name = "userId") // DB에 저장되는 foreign key 이름
    @OneToOne
    private User user; // 1명의 유저는 프로필에 하나의 이미지만 등록할 수 있도록 설정
    
    private LocalDateTime createDate;
    
    @PrePersist
    public void createDate(){
    	this.createDate = LocalDateTime.now();
    }
}

 

Repository <ImageRepository>

public interface ImageRepository extends JpaRepository<Image, Integer> {

}

 

Controller <ImageController>

@RequiredArgsConstructor
@Controller
public class ImageController {

	private final ImageService imageService;
	
    @GetMapping({"/","/image/story"})
    public String story(){
    	
    }
    
    @GetMapping("/image/popular")
    public String popular(){
    
    }
    
    @GetMapping("/image/upload")
    public String upload(){
    
    }
    
    @PostMapping("/image")
    public String imageupload(ImageUploadDto imageUploadDto, @CurrentUser User user){
    	imageService.사진업로드(imageUploadDto, user);
    }
}

 

DTO<imageUploadDto>

import lombok.Data;

@Data
public class ImageUploadDto {
	private MultiPartFile file;
    Private String caption;
}

 

Service <ImageService>

import org.springframework.stereotype.Service;
import lombok.RequiredArgsContructor;

@RequiredArgsContructor
@Service
public class ImageService {
	
    private final ImageRepository imageRepository;
    
    @Value("{file.path}") //application.yml의 파일 업로드 경로
    private String UploadFolder;
    
    public void 사진업로드(ImageUploadDto imageUploadDto, User user){
    	UUID uuid = UUID.randomUUID(); //uuid
    	Stirng imageFileName = uuid + "_" +imageUploadDto.getFile().getOriginalFilename(); //1.jpg
    
    	Path imageFilePath = Paths.get(UploadFolder + imageFileName)
        
        // 통신, I/O -> 예외가 발생할 수 있다. 
        try{
        	Files.write(imageFilePath, imageUploadDto.getFile().getBytes());
        } catch(Exception e){
        	e,printStackTrace();
        }
    }
}

 

application.yml

servlet:
	multipart:
    	enable: true
        	max-file-size: 2MB

file:
	path: c:/workspace/springbootwork/upload/

 

 

Spring Boot AWS S3연동

https://victorydntmd.tistory.com/334

 

[SpringBoot] AWS S3 연동 (1) - 파일 업로드 기본 (AmazonS3ClientBuilder)

Springboot S3 업로드를 구현하는 시리즈입니다. [SpringBoot] AWS S3 연동 (1) - 파일 업로드 기본 (AmazonS3ClientBuilder) [SpringBoot] AWS S3 연동 (2) - 파일 조작 및 Cloud Front 전체 소스 코드는 여..

victorydntmd.tistory.com

 

postman으로 파일 전송

https://elfinlas.github.io/2019/01/16/postman-insert-img/

 

Postman에서 파일 전송 처리하기

Postman을 사용하다가…최근 개발을 하면서 Rest api를 개발하다 보니 개발된 api를 테스트하기 위해 Postman을 사용한다.그런데 기능을 개발하던 중 첨부파일 기능을 개발하게 되었는데 첨부를 어떻

elfinlas.github.io

 

'java spring' 카테고리의 다른 글

자바 오버라이딩 오버로딩  (0) 2021.12.16
자바의 클래스 멤버 변수 초기화 순서  (0) 2021.12.16
spring boot JWT 실습(1)  (0) 2021.07.31
Spring boot Exception 처리  (0) 2021.07.30
DAO, DTO, Service  (0) 2021.07.29