Skip to content

Commit 64627f2

Browse files
committed
hotfix : 이미지 확장자만 업로드 가능 및 에러 처리
1 parent 8ef0ad2 commit 64627f2

File tree

3 files changed

+21
-2
lines changed

3 files changed

+21
-2
lines changed

src/main/java/ita/tinybite/global/exception/errorcode/BusinessErrorCode.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
public enum BusinessErrorCode implements ErrorCode {
88
TEST(HttpStatus.INTERNAL_SERVER_ERROR, "TEST_ERROR_CODE", "테스트 에러코드입니다."),
99
MEMBER_NOT_FOUND(HttpStatus.NOT_FOUND, "MEMBER_NOT_FOUND", "멤버를 찾을 수 없습니다."),
10+
11+
INVALID_FILE_TYPE(HttpStatus.BAD_REQUEST, "INVALID_FILE_TYPE", "지원하지 않는 파일 타입입니다.")
1012
;
1113

1214
private final HttpStatus httpStatus;

src/main/java/ita/tinybite/global/s3/FileController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ public FileController(S3Service s3Service) {
2525

2626
@PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
2727
public APIResponse<?> upload(@RequestPart MultipartFile file) throws IOException {
28-
return success(s3Service.upload(file, "uploads/" + UUID.randomUUID()));
28+
return success(s3Service.upload(file));
2929
}
3030
}

src/main/java/ita/tinybite/global/s3/S3Service.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
package ita.tinybite.global.s3;
22

3+
import ita.tinybite.global.exception.BusinessException;
4+
import ita.tinybite.global.exception.errorcode.BusinessErrorCode;
35
import org.springframework.stereotype.Service;
6+
import org.springframework.util.StringUtils;
47
import org.springframework.web.multipart.MultipartFile;
58
import software.amazon.awssdk.core.sync.RequestBody;
69
import software.amazon.awssdk.services.s3.S3Client;
710
import software.amazon.awssdk.services.s3.model.PutObjectRequest;
811

912
import java.io.IOException;
13+
import java.util.UUID;
1014

1115
@Service
1216
public class S3Service {
@@ -18,7 +22,20 @@ public S3Service(S3Client s3Client) {
1822
this.s3Client = s3Client;
1923
}
2024

21-
public String upload(MultipartFile file, String key) throws IOException {
25+
public String upload(MultipartFile file) throws IOException {
26+
27+
String contentType = file.getContentType();
28+
if (contentType == null ||
29+
!(contentType.equals("image/jpeg")
30+
|| contentType.equals("image/png")
31+
|| contentType.equals("image/webp"))) {
32+
throw BusinessException.of(BusinessErrorCode.INVALID_FILE_TYPE);
33+
}
34+
35+
String ext = StringUtils.getFilenameExtension(file.getOriginalFilename());
36+
37+
String key = "uploads/" + UUID.randomUUID() + "." + ext;
38+
2239
s3Client.putObject(
2340
PutObjectRequest.builder()
2441
.bucket(bucketName)

0 commit comments

Comments
 (0)