· 오늘 공부한 것

모집글 작성 시 이미지 파일 1개 첨부 기능

 

 

· 공부한 내용, 궁금한 내용, 부족한 내용

튜터님과 면담시간을 통해서 모집글 관련 ERD는 그대로 가는 것으로 정하였다. 그래서 entity부분은 건들 필요가 없었다. 그래서 모집글 작성 시 이미지 파일을 첨부할 수 있는 기능을 구현하였다. multipart를 사용해서 업로드를 하였는데 최종 목표는 s3에 이미지를 올리고 해당 경로를 받아와서 DB에 저장하는 것이다. 그래서 일단 해당 이미지를 서버에 저장하고 해당 경로를 받는 식으로 구현하였다. 그리고 더 공부를 해서 리팩토링을 할 것이다. controller에서 @RequestBody로 나머지 모집글에 대한 정보들을 받아오고 이미지 파일은 @RequestParam으로 받아오는 식으로 만들었다. 그 후에 해당 파일을 service에서 하지 않고 부가적인 로직은 따로 util로 빼서 처리하였다.

 

Controller

    @PostMapping(consumes = "multipart/form-data")
    public RestResponse<PostCreateRes> createPost(
            @RequestBody PostCreateReq postCreateReq, @RequestParam("image") MultipartFile image)
            throws IOException { // 인증된 유저 정보 추가
        return RestResponse.success(postService.createPost(postCreateReq, image));
    }

여기서 image를 MultipartFile로 받고 있다.

 

Service -> util에 ImageFileHandler

    public static void uploadImage(MultipartFile image) throws IOException {
        Path uploadPath = Paths.get("./upload");
        // 디렉토리가 없는 경우 생성하기
        if (!Files.exists(uploadPath)) {
            Files.createDirectories(uploadPath);
        }

        String fileName = UUID.randomUUID().toString() + "_" + image.getOriginalFilename();
        Path filePath = uploadPath.resolve(fileName);
        Files.copy(image.getInputStream(), filePath);
    }

 

이러한 과정을 거치면 upload디렉터리에 지정한 fileName으로 저장되는 것을 바랐다.

하지만 다음과 같은 415 코드 오류가 발생했다.

Content-Type 'multipart/form-data;boundary=--------------------------912120827695172642558310;charset=UTF-8' is not supported\n\tat org.springframework.web.servlet.mvc.method.annotation.

일단 지원되지 않는 미디어 유형이라는 것으로 판단은 되는데 해결해서 기록을 남기도록 해야겠다. 간단한 작업이라고 생각했고 방식은 이해했는데 오류가 있어서 더 학습이 필요하다.

 

· 오늘 서칭 한 자료

https://yoons-development-space.tistory.com/87

 

[Spring] 스프링으로 파일 업로드, 다운로드 구현하기 (3) - DB까지 사용하여, 실제로 파일 업로드와

지금까지는 업로드에 대해서 알아보았다. 실제 DB에도 저장하지 않았다. 실제로 파일을 업로드, 다운로드 하기 위해서는, 파일의 내용을 저장하는 DB까지 필요하다. 이제, 실제 예시를 통해 파일

yoons-development-space.tistory.com

https://leeeehhjj.tistory.com/65

 

spring boot 파일, 이미지 업로드(multipartfile)

게시판을 만들 때 필수적인 사진 저장 코드를 구현해봤다. 1. application.properties #Multipart file spring.servlet.multipart.enabled=true spring.servlet.multipart.max-file-size=200MB spring.servlet.multipart.max-request-size=215MB 2. Ph

leeeehhjj.tistory.com

 

· 느낀 점

- 아직 구현해야 할 부분들이 많은데 이미지 업로드, Redis사용, 조건별 전체조회방식 등 많은 부분 학습이 필요하다고 느낀다.

- 이전 프로젝트에서 많은 부분을 경험하지 못하고 최종프로젝트때 하려니 힘들지만 그래도 오류 해결해서 제대로 작동해보고 싶다.

- 특히 테스트 코드를 작성해봐야 하는데... 해야겠다.

반응형

+ Recent posts