[파일 업로드] tusHook 작업
- 파일 이동작업
This commit is contained in:
@@ -15,6 +15,8 @@ public class FileMoveTaskDto {
|
||||
private Long sizeBytes;
|
||||
private Long uploadedBytes;
|
||||
|
||||
private String folderPath;
|
||||
|
||||
private String saveName;
|
||||
private String savePath;
|
||||
private String ext;
|
||||
|
||||
@@ -382,13 +382,36 @@ public class FileService {
|
||||
+ (ext.isBlank() ? "" : "." + ext);
|
||||
|
||||
LocalDate now = LocalDate.now();
|
||||
String folder = normalizeFolderPath(task.getFolderPath());
|
||||
|
||||
return Paths.get(uploadFinalRoot,
|
||||
folder,
|
||||
String.valueOf(now.getYear()),
|
||||
String.format("%02d", now.getMonthValue()),
|
||||
String.format("%02d", now.getDayOfMonth()),
|
||||
fileName);
|
||||
}
|
||||
|
||||
private String normalizeFolderPath(String folderPath) {
|
||||
if (folderPath == null || folderPath.isBlank() || "/".equals(folderPath.trim())) {
|
||||
return "default";
|
||||
}
|
||||
|
||||
String s = folderPath.trim().replace("\\", "/");
|
||||
|
||||
// 앞뒤 슬래시 제거
|
||||
while (s.startsWith("/")) s = s.substring(1);
|
||||
while (s.endsWith("/")) s = s.substring(0, s.length() - 1);
|
||||
|
||||
// 경로 역참조 차단
|
||||
s = s.replace("..", "");
|
||||
|
||||
// 비어버리면 기본 폴더
|
||||
if (s.isBlank()) return "default";
|
||||
|
||||
return s;
|
||||
}
|
||||
|
||||
private String toSavePath(Path finalPath) {
|
||||
// DB 저장용 상대경로(운영 규칙에 맞게 조정)
|
||||
// 예: /2026/03/09/xxx.zip
|
||||
|
||||
@@ -195,12 +195,27 @@
|
||||
|
||||
<select id="selectMoveTaskByFileUuid" resultType="com.alist.api.common.modules.file.dto.FileMoveTaskDto">
|
||||
/*FileMapper.selectMoveTaskByFileUuid*/
|
||||
SELECT FILE_DETAIL_IDX, FILE_MASTER_IDX, FILE_UUID, TUS_UPLOAD_ID,
|
||||
ORIGIN_NAME, CONTENT_TYPE, SIZE_BYTES, UPLOADED_BYTES,
|
||||
SAVE_NAME, SAVE_PATH, `EXT`, MOVE_YN, MOVE_TRY_COUNT, MOVE_LAST_ERROR
|
||||
FROM ALISTLMS.FILE_DETAIL
|
||||
WHERE FILE_UUID = #{fileUuid}
|
||||
AND DEL_YN = 'N'
|
||||
SELECT LFD.FILE_DETAIL_IDX
|
||||
, LFD.FILE_MASTER_IDX
|
||||
, LFD.FILE_UUID
|
||||
, LFD.TUS_UPLOAD_ID
|
||||
, LFD.ORIGIN_NAME
|
||||
, LFD.CONTENT_TYPE
|
||||
, LFD.SIZE_BYTES
|
||||
, LFD.UPLOADED_BYTES
|
||||
, LFM.FOLDER_PATH
|
||||
, LFD.SAVE_NAME
|
||||
, LFD.SAVE_PATH
|
||||
, LFD.`EXT`
|
||||
, LFD.MOVE_YN
|
||||
, LFD.MOVE_TRY_COUNT
|
||||
, LFD.MOVE_LAST_ERROR
|
||||
FROM ALISTLMS.FILE_DETAIL LFD
|
||||
INNER JOIN ALISTLMS.FILE_MASTER LFM
|
||||
ON LFM.FILE_MASTER_IDX = LFD.FILE_MASTER_IDX
|
||||
AND LFM.DEL_YN = 'N'
|
||||
WHERE LFD.FILE_UUID = #{fileUuid}
|
||||
AND LFD.DEL_YN = 'N'
|
||||
LIMIT 1
|
||||
</select>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user