68 lines
2.3 KiB
Java
68 lines
2.3 KiB
Java
/************************************************************
|
|
*
|
|
* @packageName : io.company.localhost.FileService
|
|
* @fileName : FileService.java
|
|
* @author : 박지윤
|
|
* @date : 25.01.17
|
|
* @description :
|
|
*
|
|
* ===========================================================
|
|
* DATE AUTHOR NOTE
|
|
* -----------------------------------------------------------
|
|
* 24.01.17 박지윤 최초 생성
|
|
*
|
|
*************************************************************/
|
|
package io.company.localhost.service;
|
|
|
|
import java.io.IOException;
|
|
import java.nio.file.Files;
|
|
import java.nio.file.Path;
|
|
import java.nio.file.Paths;
|
|
import java.nio.file.StandardCopyOption;
|
|
import java.util.UUID;
|
|
import org.apache.commons.io.FilenameUtils;
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
@Service
|
|
@RequiredArgsConstructor
|
|
public class FileService {
|
|
|
|
|
|
@Value("${filePath.profile}")
|
|
private String uploadPath;
|
|
|
|
/**
|
|
* 파일 업로드
|
|
*
|
|
* @param file
|
|
* @return
|
|
* @throws RuntimeException
|
|
*/
|
|
public String uploadFile(MultipartFile file) {
|
|
try {
|
|
// 원본 파일명
|
|
String originalFilename = file.getOriginalFilename();
|
|
// 파일 확장자
|
|
String extension = FilenameUtils.getExtension(originalFilename);
|
|
// UUID를 사용하여 고유한 파일명 생성
|
|
String newFilename = UUID.randomUUID().toString() + "." + extension;
|
|
|
|
// 최종 저장 경로 생성 (기본경로 + 파일명)
|
|
Path targetPath = Paths.get(uploadPath, newFilename);
|
|
// 저장될 디렉토리가 없는 경우 생성
|
|
Files.createDirectories(targetPath.getParent());
|
|
|
|
// 동일 파일명이 있을 경우 덮어쓰기
|
|
Files.copy(file.getInputStream(), targetPath, StandardCopyOption.REPLACE_EXISTING);
|
|
|
|
// 저장된 파일의 상대 경로 반환
|
|
return newFilename;
|
|
|
|
} catch (IOException e) {
|
|
throw new RuntimeException("파일 업로드 실패: " + e.getMessage());
|
|
}
|
|
}
|
|
} |