From b59eabb588a61c25a394b2dd4c918dab7cb02e6b Mon Sep 17 00:00:00 2001 From: rlarlgnszx Date: Tue, 16 Jul 2024 23:27:09 +0900 Subject: [PATCH] =?UTF-8?q?[feat]=20=ED=99=95=EC=9E=A5=EC=9E=90=EC=97=90?= =?UTF-8?q?=20=EB=94=B0=EB=9D=BC=20=EC=A0=80=EC=9E=A5=EB=A1=9C=EC=A7=81=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20-=20#132?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/org/dateroad/s3/S3Service.java | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/dateroad-external/src/main/java/org/dateroad/s3/S3Service.java b/dateroad-external/src/main/java/org/dateroad/s3/S3Service.java index 17b87dd7..b6560f31 100644 --- a/dateroad-external/src/main/java/org/dateroad/s3/S3Service.java +++ b/dateroad-external/src/main/java/org/dateroad/s3/S3Service.java @@ -1,5 +1,6 @@ package org.dateroad.s3; +import java.util.Objects; import java.util.concurrent.CompletableFuture; import java.util.concurrent.Future; import org.dateroad.code.FailureCode; @@ -23,7 +24,7 @@ public class S3Service { private final String bucketName; private final AWSConfig awsConfig; - private static final List IMAGE_EXTENSIONS = Arrays.asList("image/jpeg", "image/png", "image/jpg", "image/webp","image/heic","image/heif"); + private static final List IMAGE_EXTENSIONS = Arrays.asList("image/jpeg", "image/png", "image/jpg", "image/webp", "image/heic", "image/heif"); private static final Long MAX_FILE_SIZE = 5 * 1024 * 1024L; public S3Service(@Value("${aws-property.s3-bucket-name}") final String bucketName, AWSConfig awsConfig) { @@ -33,7 +34,7 @@ public S3Service(@Value("${aws-property.s3-bucket-name}") final String bucketNam @Async public Future uploadImage(String directoryPath, MultipartFile image) throws IOException { - final String key = directoryPath + generateImageFileName(); + final String key = directoryPath + generateImageFileName(image); final S3Client s3Client = awsConfig.getS3Client(); validateExtension(image); @@ -62,8 +63,22 @@ public void deleteImage(String imageUrl) throws IOException { ); } - private String generateImageFileName() { - return UUID.randomUUID() + ".jpg"; + private String generateImageFileName(MultipartFile image) { + String extension = getExtension(Objects.requireNonNull(image.getContentType())); + if (extension == null) { + throw new InvalidValueException(FailureCode.INVALID_IMAGE_TYPE); + } + return UUID.randomUUID() + extension; + } + + private String getExtension(String contentType) { + return switch (contentType) { + case "image/png" -> ".png"; + case "image/webp" -> ".webp"; + case "image/heic" -> ".heic"; + case "image/heif" -> ".heif"; + default -> ".jpg"; + }; } private void validateExtension(MultipartFile image) {