프로필 파일 업로드 서비스
This commit is contained in:
parent
1973322cbf
commit
379fef86e0
69
src/main/java/io/company/localhost/service/FileService.java
Normal file
69
src/main/java/io/company/localhost/service/FileService.java
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
/************************************************************
|
||||||
|
*
|
||||||
|
* @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
|
||||||
|
* @param directory
|
||||||
|
* @return
|
||||||
|
* @throws RuntimeException
|
||||||
|
*/
|
||||||
|
public String uploadFile(MultipartFile file, String directory) {
|
||||||
|
try {
|
||||||
|
// 원본 파일명
|
||||||
|
String originalFilename = file.getOriginalFilename();
|
||||||
|
// 파일 확장자
|
||||||
|
String extension = FilenameUtils.getExtension(originalFilename);
|
||||||
|
// UUID를 사용하여 고유한 파일명 생성
|
||||||
|
String newFilename = UUID.randomUUID().toString() + "." + extension;
|
||||||
|
|
||||||
|
// 최종 저장 경로 생성 (기본경로 + 하위디렉토리 + 파일명)
|
||||||
|
Path targetPath = Paths.get(uploadPath, directory, newFilename);
|
||||||
|
// 저장될 디렉토리가 없는 경우 생성
|
||||||
|
Files.createDirectories(targetPath.getParent());
|
||||||
|
|
||||||
|
// 동일 파일명이 있을 경우 덮어쓰기
|
||||||
|
Files.copy(file.getInputStream(), targetPath, StandardCopyOption.REPLACE_EXISTING);
|
||||||
|
|
||||||
|
// 저장된 파일의 상대 경로 반환
|
||||||
|
return directory + "/" + newFilename;
|
||||||
|
|
||||||
|
} catch (IOException e) {
|
||||||
|
throw new RuntimeException("파일 업로드 실패: " + e.getMessage());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue
Block a user