게시판 에디터 이미지 삭제 시 파일 삭제 및 데이터 제거 추가

This commit is contained in:
nevermoregb 2025-03-24 13:57:43 +09:00
parent 38d4c401c3
commit dc7ab68fc6
3 changed files with 34 additions and 7 deletions

View File

@ -114,6 +114,8 @@ public class MapDto extends ListOrderedMap {
result.add(clazz.cast(item));
} else if (clazz.equals(Long.class) && item instanceof Integer) {
result.add(clazz.cast(Long.valueOf((Integer) item)));
} else if (clazz.equals(String.class) && item instanceof Integer) {
result.add(clazz.cast(String.valueOf((Integer) item)));
} else if (item instanceof Map && clazz.equals(MapDto.class)) {
result.add(clazz.cast(new MapDto((Map<String, Object>) item)));
} else {

View File

@ -73,7 +73,7 @@ public class ImageUploadController {
Files.write(filePath, file.getBytes());
String fileUrl = "upload/img/board/" + fileName;
long fileIndex = insertUploadEditorImageInfo(fileName, originalFileName, fileUrl, fileExtension, fileSize);
long fileIndex = insertUploadEditorImageInfo(fileName, originalFileName, filePath.toString(), fileExtension, fileSize);
MapDto map = new MapDto();
if(fileIndex != 0) map.put("fileIndex", fileIndex);

View File

@ -19,6 +19,7 @@ import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import org.springframework.http.HttpStatus;
import org.springframework.scheduling.annotation.Scheduled;
@ -83,6 +84,7 @@ public class localbordService {
}
@SuppressWarnings("unchecked")
@Transactional
public BigInteger insertBoard(MapDto map) {
// 익명게시판이면 회원 정보를 null로 설정
if ("300102".equals(String.valueOf(map.get("LOCBRDTYP")))) {
@ -99,6 +101,13 @@ public class localbordService {
map.put("editorImgList", editorUploadedImgList);
this.updateBoardIndexToFile(map);
}
// 에디터 수정 업로드 에디터 이미지 삭제
if(map.get("editorDeleteImgList") != null) {
ArrayList<String> editorDeleteImgList = (ArrayList<String>) map.getList("editorDeleteImgList", String.class);
String[] array = editorDeleteImgList.stream().toArray(String[]::new);
this.deleteFileAndData(array);
}
return (BigInteger) map.get("LOCBRDSEQ");
}
@ -416,12 +425,15 @@ public class localbordService {
// 제거 첨부파일 삭제
if(map.get("delFileIdx") != null) {
String[] array = String.valueOf(map.get("delFileIdx")).split(",");
List<String> delListInfo = this.selectDelFileInfo(array); // 삭제할 파일 정보 조회
for(String item : delListInfo) {
fileService.removeFile(item); // 파일 삭제
}
this.deleteFileInfo(array); // db 데이터 삭제
this.deleteFileAndData(array);
}
// 에디터 수정 업로드 에디터 이미지 삭제
if(map.get("editorDeleteImgList") != null) {
String[] array = String.valueOf(map.get("editorDeleteImgList")).split(",");
this.deleteFileAndData(array);
}
} else {
return ApiResponse.error(HttpStatus.INTERNAL_SERVER_ERROR, "게시물이 수정에 실패하였습니다.");
}
@ -441,6 +453,19 @@ public class localbordService {
private int updateBoardIndexToFile(MapDto map) {
return boardMapper.updateBoardIndexToFile(map);
}
/**
* 실제 파일 삭제 db 데이터 제거
*
* @param array
*/
private void deleteFileAndData(String[] array) {
List<String> delListInfo = this.selectDelFileInfo(array); // 삭제할 파일 정보 조회
for(String item : delListInfo) {
fileService.removeFile(item); // 파일 삭제
}
this.deleteFileInfo(array);
}
/**
* 삭제 첨부파일 정보 조회
@ -530,7 +555,7 @@ public class localbordService {
/**
* Garbage File Collector
*/
@Scheduled(cron = "0 0 2 * * *", zone = "Asia/Seoul")
@Scheduled(cron = "0 0 2 1 * *", zone = "Asia/Seoul")
public void deleteTrashFiles() {
List<FileVo> list = this.selectFilesBoardIndexIsNull();