· 오늘 공부한 것
모집글 작성 시 이미지 파일 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 코드 오류가 발생했다.
일단 지원되지 않는 미디어 유형이라는 것으로 판단은 되는데 해결해서 기록을 남기도록 해야겠다. 간단한 작업이라고 생각했고 방식은 이해했는데 오류가 있어서 더 학습이 필요하다.
· 오늘 서칭 한 자료
https://yoons-development-space.tistory.com/87
https://leeeehhjj.tistory.com/65
· 느낀 점
- 아직 구현해야 할 부분들이 많은데 이미지 업로드, Redis사용, 조건별 전체조회방식 등 많은 부분 학습이 필요하다고 느낀다.
- 이전 프로젝트에서 많은 부분을 경험하지 못하고 최종프로젝트때 하려니 힘들지만 그래도 오류 해결해서 제대로 작동해보고 싶다.
- 특히 테스트 코드를 작성해봐야 하는데... 해야겠다.
'Today I Learned' 카테고리의 다른 글
2024-01-11 TIL 기술면접, 최종프로젝트(5) (0) | 2024.01.11 |
---|---|
2024-01-10 TIL 기술면접, 최종프로젝트(4) (0) | 2024.01.10 |
2024-01-08 TIL 기술면접, 최종프로젝트(2) (0) | 2024.01.08 |
2024-01-05 TIL 기술면접, 최종프로젝트(1) (0) | 2024.01.05 |
2024-01-03 TIL 업무 관리 시스템 팀프로젝트(KPT회고) (0) | 2024.01.03 |