Skip to content

Commit b0338b9

Browse files
committed
[FEAT] presignedURL 병렬 발급 로직 구현, 파일 형식 제한 삭제
1 parent 7109f69 commit b0338b9

File tree

3 files changed

+35
-13
lines changed

3 files changed

+35
-13
lines changed

src/main/java/com/sumte/image/controller/ImageController.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -82,17 +82,17 @@ public class ImageController {
8282
@PostMapping
8383
public ResponseEntity<List<ImageResponseDTO>> saveImagesBatch(
8484

85-
@Valid @RequestBody List<ImageRequestDTO> dtos) {
85+
@Valid @RequestBody List<ImageRequestDTO> imageRequestDTOS) {
8686

87-
var savedList = imageService.saveAllImages(dtos);
88-
var respList = savedList.stream()
87+
var savedImageList = imageService.saveAllImages(imageRequestDTOS);
88+
var imageResponseDTOS = savedImageList.stream()
8989
.map(img -> new ImageResponseDTO(
9090
img.getId(), img.getUrl(), img.getSortOrder(), img.getOwnerType(), img.getOwnerId()))
9191
.collect(Collectors.toList());
9292

9393
return ResponseEntity
9494
.status(HttpStatus.CREATED)
95-
.body(respList);
95+
.body(imageResponseDTOS);
9696
}
9797

9898
@Operation(
@@ -132,8 +132,8 @@ public ResponseEntity<List<ImageResponseDTO>> replaceImages(
132132
.map(r -> new ImageRequestDTO(ownerType, ownerId, r.getUrl()))
133133
.collect(Collectors.toList());
134134

135-
var saved = imageService.replaceImages(ownerType, ownerId, requests);
136-
var resp = saved.stream()
135+
var replacedImages = imageService.replaceImages(ownerType, ownerId, requests);
136+
var imageResponseDTOS = replacedImages.stream()
137137
.map(img -> new ImageResponseDTO(
138138
img.getId(),
139139
img.getUrl(),
@@ -143,7 +143,7 @@ public ResponseEntity<List<ImageResponseDTO>> replaceImages(
143143
))
144144
.collect(Collectors.toList());
145145

146-
return ResponseEntity.ok(resp);
146+
return ResponseEntity.ok(imageResponseDTOS);
147147
}
148148

149149
@Operation(summary = "이미지 목록 조회", description = "주어진 ownerType, ownerId 에 매핑된 이미지 리스트를 정렬순으로 조회합니다.")
@@ -164,11 +164,11 @@ public ResponseEntity<List<ImageResponseDTO>> getImages(
164164
in = ParameterIn.QUERY
165165
)
166166
@RequestParam Long ownerId) {
167-
var list = imageService.getImagesByOwner(ownerType, ownerId);
168-
var dtos = list.stream()
167+
var imageList = imageService.getImagesByOwner(ownerType, ownerId);
168+
var imageResponseDTOS = imageList.stream()
169169
.map(img -> new ImageResponseDTO(
170170
img.getId(), img.getUrl(), img.getSortOrder(), img.getOwnerType(), img.getOwnerId()))
171171
.collect(Collectors.toList());
172-
return ResponseEntity.ok(dtos);
172+
return ResponseEntity.ok(imageResponseDTOS);
173173
}
174174
}

src/main/java/com/sumte/image/controller/S3FileUploadController.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,10 @@
11
package com.sumte.image.controller;
22

3+
import java.util.List;
4+
import java.util.Map;
5+
import java.util.function.Function;
6+
import java.util.stream.Collectors;
7+
38
import org.springframework.http.ResponseEntity;
49
import org.springframework.web.bind.annotation.GetMapping;
510
import org.springframework.web.bind.annotation.RequestMapping;
@@ -20,12 +25,29 @@ public class S3FileUploadController {
2025

2126
private final S3FileUploadService s3FileUploadService;
2227

23-
//@AllUser
28+
/*
2429
@Operation(summary = "PresignedUrl 발급", description = "이미지, 파일 업로드를 위한 PresignedUrl을 발급합니다.")
2530
@GetMapping("/presigned-url")
2631
public ResponseEntity<String> generatePresignedUrl(@RequestParam String fileName,
2732
@RequestParam String contentType) {
2833
String presignedUrl = s3FileUploadService.generatePresignedUrl(fileName, contentType);
2934
return ResponseEntity.ok(presignedUrl);
3035
}
36+
*/
37+
38+
@Operation(
39+
summary = "Presigned URLs 일괄 발급",
40+
description = "여러 개의 파일명에 대해 Presigned URL을 일괄 생성하여 반환합니다."
41+
)
42+
@GetMapping("/presigned-urls")
43+
public ResponseEntity<Map<String, String>> generatePresignedUrls(
44+
@RequestParam(name = "fileNames", defaultValue = "sumte1, ouchlogo") List<String> fileNames
45+
) {
46+
Map<String, String> presignedUrls = fileNames.stream()
47+
.collect(Collectors.toMap(
48+
Function.identity(),
49+
key -> s3FileUploadService.generatePresignedUrl(key)
50+
));
51+
return ResponseEntity.ok(presignedUrls);
52+
}
3153
}

src/main/java/com/sumte/image/service/S3FileUploadService.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public class S3FileUploadService {
2323
private String bucket;
2424

2525
@Transactional
26-
public String generatePresignedUrl(String fileName, String contentType) {
26+
public String generatePresignedUrl(String fileName/*, String contentType*/) {
2727
// 만료 시간 설정
2828
Date expiration = new Date();
2929
long expTimeMillis = expiration.getTime() + (1000 * 60 * 5); // 5분
@@ -34,7 +34,7 @@ public String generatePresignedUrl(String fileName, String contentType) {
3434
new GeneratePresignedUrlRequest(bucket, fileName)
3535
.withMethod(HttpMethod.PUT)
3636
.withExpiration(expiration);
37-
//.withContentType(contentType);
37+
//.withContentType(contentType);
3838

3939
// Presigned URL 생성
4040
URL url = amazonS3.generatePresignedUrl(generatePresignedUrlRequest);

0 commit comments

Comments
 (0)