Merge branch 'be/refactor/image-zip' into 'be/develop'

Refactor: zip 파일 업로드 시 폴더 안에 폴더가 하나 더 생기는 현상 수정

See merge request s11-s-project/S11P21S002!158
This commit is contained in:
김태수 2024-09-24 16:29:56 +09:00
commit 925a3107aa

View File

@ -147,7 +147,32 @@ public class ImageService {
unzip(folderOrZip, tempDir.toString()); unzip(folderOrZip, tempDir.toString());
// 압축 풀린 폴더를 재귀적으로 탐색하여 하위 폴더 이미지 파일을 저장 // 압축 풀린 폴더를 재귀적으로 탐색하여 하위 폴더 이미지 파일을 저장
processFolderRecursively(tempDir.toFile(), parentFolder, project); if (tempDir.toFile().exists()) {
File[] files = tempDir.toFile().listFiles();
if (files != null) {
for (File file : files) {
if (file.isDirectory()) {
// 하위 폴더인 경우 재귀 호출
processFolderRecursively(file, parentFolder, project);
} else if (isImageFile(file)) {
// 이미지 파일인 경우
String fileName = file.getName();
String extension = fileName.substring(fileName.lastIndexOf(".") + 1);
try (InputStream inputStream = new FileInputStream(file)) {
// InputStream으로 S3 업로드
String imageKey = s3UploadService.uploadFromInputStream(inputStream, extension, project.getId(), file.getName());
Image image = Image.of(file.getName(), imageKey, extension, parentFolder);
imageRepository.save(image);
} catch (IOException e) {
throw new CustomException(ErrorCode.FAIL_TO_CREATE_FILE);
}
}
}
}
}
} else { } else {
// 압축 파일이 아닌 경우 (단일 폴더 또는 파일) // 압축 파일이 아닌 경우 (단일 폴더 또는 파일)
File tempFolder = new File(System.getProperty("java.io.tmpdir"), originalFilename); File tempFolder = new File(System.getProperty("java.io.tmpdir"), originalFilename);
@ -163,8 +188,8 @@ public class ImageService {
if (directory.exists() && directory.isDirectory()) { if (directory.exists() && directory.isDirectory()) {
Folder currentFolder = Folder.of(directory.getName(), parentFolder, project); Folder currentFolder = Folder.of(directory.getName(), parentFolder, project);
folderRepository.save(currentFolder); folderRepository.save(currentFolder);
File[] files = directory.listFiles(); File[] files = directory.listFiles();
if (files != null) { if (files != null) {
for (File file : files) { for (File file : files) {
if (file.isDirectory()) { if (file.isDirectory()) {