Skip to content

Commit 853267c

Browse files
committed
fix: S3 업로드 관련 수정 및 PresignedUploadResponseDto 추가
1 parent 0d7043a commit 853267c

4 files changed

Lines changed: 25 additions & 7 deletions

File tree

src/main/java/com/example/FixLog/config/SecurityConfig.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
3737
.requestMatchers(HttpMethod.GET, "/members/check-nickname").permitAll()
3838
.requestMatchers(HttpMethod.GET, "/", "/main", "/main/**").permitAll()
3939
.requestMatchers(HttpMethod.GET, "/posts/**").permitAll()
40+
41+
.requestMatchers("/api/s3/**").permitAll()
4042
// h2-console (로컬 테스트용)
4143
.requestMatchers(HttpMethod.GET, "/h2-console/**").permitAll()
4244
// 배포 확인용 임시 허용

src/main/java/com/example/FixLog/controller/MypageMemberController.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616
import jakarta.validation.Valid;
1717
import org.springframework.security.core.annotation.AuthenticationPrincipal;
1818
import org.springframework.web.bind.annotation.*;
19+
import com.example.FixLog.dto.s3.PresignedUploadResponseDto;
20+
1921

2022
import java.util.Map;
2123

@@ -55,9 +57,9 @@ public ResponseEntity<Response<PresignResponseDto>> presignProfileImage(
5557
) {
5658
if (member == null) throw new CustomException(ErrorCode.UNAUTHORIZED);
5759

58-
String key = s3Service.generateKey("profile", filename);
59-
String uploadUrl = s3Service.generatePresignedUrl("profile", filename, 15);
60-
String fileUrl = s3Service.getObjectUrl(key);
60+
PresignedUploadResponseDto responseDto = s3Service.generatePresignedUploadUrl("profile", filename, 15);
61+
String uploadUrl = responseDto.getPresignedUrl();
62+
String fileUrl = responseDto.getFileUrl();
6163

6264
PresignResponseDto dto = new PresignResponseDto(uploadUrl, fileUrl);
6365
return ResponseEntity.ok(Response.success("Presigned URL 발급 성공", dto));
@@ -86,4 +88,4 @@ public ResponseEntity<Response<String>> editBio(
8688
memberService.editBio(member, requestDto.getBio());
8789
return ResponseEntity.ok(Response.success("소개글 수정 성공", "SUCCESS"));
8890
}
89-
}
91+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.example.FixLog.dto.s3;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
6+
@Getter
7+
@AllArgsConstructor
8+
public class PresignedUploadResponseDto {
9+
private String presignedUrl; // PUT 요청용 presigned URL
10+
private String fileUrl; // 업로드 완료 후 접근 가능한 S3 URL
11+
}
12+

src/main/java/com/example/FixLog/service/S3Service.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.amazonaws.services.s3.AmazonS3;
55
import com.amazonaws.services.s3.model.GeneratePresignedUrlRequest;
66
import com.amazonaws.services.s3.model.ObjectMetadata;
7+
import com.example.FixLog.dto.s3.PresignedUploadResponseDto;
78
import com.example.FixLog.exception.CustomException;
89
import com.example.FixLog.exception.ErrorCode;
910
import lombok.RequiredArgsConstructor;
@@ -46,7 +47,7 @@ public String generateKey(String dirName, String filename) {
4647
return dirName + "/" + UUID.randomUUID() + "_" + filename;
4748
}
4849

49-
public String generatePresignedUrl(String dirName, String filename, int minutes) {
50+
public PresignedUploadResponseDto generatePresignedUploadUrl(String dirName, String filename, int minutes) {
5051
String key = generateKey(dirName, filename);
5152
Date expiration = new Date(System.currentTimeMillis() + minutes * 60L * 1000L);
5253

@@ -55,10 +56,11 @@ public String generatePresignedUrl(String dirName, String filename, int minutes)
5556
.withExpiration(expiration);
5657

5758
URL url = amazonS3.generatePresignedUrl(request);
58-
return url.toString();
59+
60+
return new PresignedUploadResponseDto(url.toString(), getObjectUrl(key));
5961
}
6062

6163
public String getObjectUrl(String key) {
6264
return amazonS3.getUrl(bucket, key).toString();
6365
}
64-
}
66+
}

0 commit comments

Comments
 (0)