Skip to content

Commit 73ef340

Browse files
EpicFnEpicFn
andauthored
hotfix : 스페이스 이미지 저장 로직 수정 (#163)
* fix : 확장자 추가하고 로그 뱉도록 변경 * fix : prefix 로 구분하도록 변경 * fix : CI 과정에 더미 prefix 값 추가 * fix : 환경 파일에 prefix 추가 * fix : 오타 수정 --------- Co-authored-by: EpicFn <[email protected]>
1 parent 0fa75cc commit 73ef340

File tree

3 files changed

+14
-2
lines changed

3 files changed

+14
-2
lines changed

.github/workflows/test-server-ci.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ jobs:
9090
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
9191
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
9292
AWS_S3_BUCKET_NAME: ${{ secrets.AWS_S3_BUCKET_NAME }}
93+
AWS_S3_PREFIX: test/
9394
SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
9495
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
9596
JWT_ACCESS_TOKEN_VALIDITY: ${{ secrets.JWT_ACCESS_TOKEN_VALIDITY }}

src/main/java/org/tuna/zoopzoop/backend/domain/space/space/service/SpaceService.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,13 @@
33
import jakarta.persistence.NoResultException;
44
import jakarta.validation.constraints.NotBlank;
55
import lombok.RequiredArgsConstructor;
6+
import lombok.extern.slf4j.Slf4j;
67
import org.hibernate.validator.constraints.Length;
8+
import org.springframework.beans.factory.annotation.Value;
79
import org.springframework.dao.DataIntegrityViolationException;
810
import org.springframework.stereotype.Service;
911
import org.springframework.transaction.annotation.Transactional;
12+
import org.springframework.util.StringUtils;
1013
import org.springframework.web.multipart.MultipartFile;
1114
import org.tuna.zoopzoop.backend.domain.datasource.repository.DataSourceRepository;
1215
import org.tuna.zoopzoop.backend.domain.datasource.repository.TagRepository;
@@ -18,6 +21,7 @@
1821
import org.tuna.zoopzoop.backend.global.aws.S3Service;
1922
import org.tuna.zoopzoop.backend.global.clients.liveblocks.LiveblocksClient;
2023

24+
@Slf4j
2125
@Service
2226
@RequiredArgsConstructor
2327
public class SpaceService {
@@ -28,6 +32,9 @@ public class SpaceService {
2832
private final TagRepository tagRepository;
2933
private final DataSourceRepository dataSourceRepository;
3034

35+
@Value("${spring.cloud.aws.s3.prefix}")
36+
private String s3Prefix;
37+
3138
// ======================== 스페이스 조회 ======================== //
3239

3340
/**
@@ -174,9 +181,10 @@ public void updateSpaceThumbnail(Integer spaceId, Member requester, MultipartFil
174181
}
175182

176183
try {
177-
//String fileName = "space/" + spaceId + "/thumbnail/" + System.currentTimeMillis() + "_" +
184+
//String fileName = "space-thumbnail/prefix/space_id.jpg";
178185
// S3 저장 시 파일 이름 고정 (덮어쓰기)
179-
String fileName = "space-thumbnail/space_" + spaceId ;
186+
String extension = StringUtils.getFilenameExtension(image.getOriginalFilename());
187+
String fileName = "space-thumbnail/" + s3Prefix + "/space_" + spaceId + "." + extension;
180188
String baseImageUrl = s3Service.upload(image, fileName);
181189

182190
// DB 용으로 현재 시간을 쿼리 파라미터에 추가 (캐시 무효화)
@@ -186,6 +194,7 @@ public void updateSpaceThumbnail(Integer spaceId, Member requester, MultipartFil
186194
space.setThumbnailUrl(finalImageUrl);
187195
spaceRepository.save(space);
188196
} catch (Exception e) {
197+
log.error("Space thumbnail upload failed: ", e);
189198
throw new RuntimeException("스페이스 썸네일 이미지 업로드에 실패했습니다.");
190199
}
191200
}

src/main/resources/application.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,11 @@ spring:
108108
static: ap-northeast-2
109109
s3:
110110
bucket: ${AWS_S3_BUCKET_NAME}
111+
prefix: ${AWS_S3_PREFIX}
111112
stack:
112113
auto: false
113114

115+
114116
#Spring doc 설정
115117
springdoc:
116118
default-produces-media-type: application/json;charset=UTF-8

0 commit comments

Comments
 (0)