diff --git a/src/main/java/B1G4/bookmark/service/ReportPlaceService/ReportPlaceServiceImpl.java b/src/main/java/B1G4/bookmark/service/ReportPlaceService/ReportPlaceServiceImpl.java index 73d9428..8441063 100644 --- a/src/main/java/B1G4/bookmark/service/ReportPlaceService/ReportPlaceServiceImpl.java +++ b/src/main/java/B1G4/bookmark/service/ReportPlaceService/ReportPlaceServiceImpl.java @@ -4,6 +4,7 @@ import B1G4.bookmark.domain.Member; import B1G4.bookmark.domain.ReportPlace; import B1G4.bookmark.repository.ReportPlaceRepository; +import B1G4.bookmark.service.S3Service.S3ImageServiceImpl; import B1G4.bookmark.web.dto.ReportPlaceDTO.ReportPlaceRequestDTO; import B1G4.bookmark.web.dto.ReportPlaceDTO.ReportPlaceResponseDTO; import lombok.RequiredArgsConstructor; @@ -20,11 +21,13 @@ import java.util.List; import java.util.UUID; + @Service @RequiredArgsConstructor public class ReportPlaceServiceImpl implements ReportPlaceService { private final ReportPlaceRepository reportPlaceRepository; + private final S3ImageServiceImpl s3ImageService; public ReportPlaceResponseDTO createReportPlace(ReportPlaceRequestDTO requestDTO, List images, Member member) { List imageUrls = uploadImages(images); @@ -38,20 +41,17 @@ public ReportPlaceResponseDTO createReportPlace(ReportPlaceRequestDTO requestDTO public List uploadImages(List images) { if (images == null || images.isEmpty()) { - return List.of(); // 이미지가 없으면 빈 리스트 반환 + return List.of(); } - // 이미지 파일 저장 경로 (나중에 s3로 변경) - String uploadsDir = "src/main/resources/static/uploads/reportImgs/"; - List imageUrls = new ArrayList<>(); images.forEach(image -> { if (!image.isEmpty()) { try { - String dbFilePath = saveImage(image, uploadsDir); - imageUrls.add(dbFilePath); // URL 추가 - } catch (IOException e) { + String s3Url = s3ImageService.upload(image); + imageUrls.add(s3Url); + } catch (Exception e) { e.printStackTrace(); } } @@ -59,23 +59,4 @@ public List uploadImages(List images) { return imageUrls; } - - private String saveImage(MultipartFile image, String uploadsDir) throws IOException { - String fileName = UUID.randomUUID().toString().replace("-", "") + "_" + image.getOriginalFilename(); - Path uploadsPath = Paths.get(uploadsDir).toAbsolutePath(); - - if (!Files.exists(uploadsPath)) { - Files.createDirectories(uploadsPath); - } - - Path filePath = uploadsPath.resolve(fileName); - String dbFilePath = "/uploads/reportImgs/" + fileName; - - File file = filePath.toFile(); - try (FileOutputStream fos = new FileOutputStream(file)) { - fos.write(image.getBytes()); - } - - return dbFilePath; - } } \ No newline at end of file diff --git a/src/main/java/B1G4/bookmark/service/ReviewService/ReviewImgServiceImpl.java b/src/main/java/B1G4/bookmark/service/ReviewService/ReviewImgServiceImpl.java index 74ede18..5d49932 100644 --- a/src/main/java/B1G4/bookmark/service/ReviewService/ReviewImgServiceImpl.java +++ b/src/main/java/B1G4/bookmark/service/ReviewService/ReviewImgServiceImpl.java @@ -4,6 +4,7 @@ import B1G4.bookmark.domain.ReviewImg; import B1G4.bookmark.repository.ReviewImgRepository; import B1G4.bookmark.repository.ReviewRepository; +import B1G4.bookmark.service.S3Service.S3ImageServiceImpl; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; @@ -23,6 +24,7 @@ public class ReviewImgServiceImpl implements ReviewImgService { private final ReviewImgRepository reviewImgRepository; private final ReviewRepository reviewRepository; + private final S3ImageServiceImpl s3ImageService; // 이미지 저장 public void uploadImage(Long reviewId, List images) { @@ -31,51 +33,23 @@ public void uploadImage(Long reviewId, List images) { Review review = reviewRepository.findById(reviewId) .orElseThrow(() -> new IllegalArgumentException("해당 id를 가진 리뷰 없음")); - // 이미지 파일 저장하는 경로 -> 나중에 s3로 바꿈 - String uploadsDir = "src/main/resources/static/uploads/reviewImgs/"; - images.forEach(image -> { if (!image.isEmpty()) { try { - // 이미지 파일 저장 후 경로 반환 - String dbFilePath = saveImage(image, uploadsDir); + // S3에 이미지 업로드 후 URL 반환 + String s3Url = s3ImageService.upload(image); // ReviewImg 엔티티 생성 및 DB 저장 ReviewImg reviewImg = ReviewImg.builder() .review(review) - .url(dbFilePath) + .url(s3Url) .build(); reviewImgRepository.save(reviewImg); - } catch (IOException e) { + } catch (Exception e) { e.printStackTrace(); } } }); } - - // 이미지 파일을 저장하는 메서드 - private String saveImage(MultipartFile image, String uploadsDir) throws IOException { - // 고유한 파일 이름 생성 - String fileName = UUID.randomUUID().toString().replace("-", "") + "_" + image.getOriginalFilename(); - // 경로를 절대 경로로 변환 - Path uploadsPath = Paths.get(uploadsDir).toAbsolutePath(); - - // 디렉토리가 존재하지 않으면 생성 - if (!Files.exists(uploadsPath)) { - Files.createDirectories(uploadsPath); - } - - // 파일 전체 경로 생성 - Path filePath = uploadsPath.resolve(fileName); - String dbFilePath = "/uploads/reviewImgs/" + fileName; - - // 파일 저장 - File file = filePath.toFile(); - try (FileOutputStream fos = new FileOutputStream(file)) { - fos.write(image.getBytes()); - } - - return dbFilePath; - } }