FileService

2024. 4. 11. 16:51개발일지

package com.example.totalproject.Service;

import org.springframework.stereotype.Service;

import java.io.File;
import java.io.FileOutputStream;
import java.util.UUID;

//파일업로드 기능을 Service
//A.jpg-->c:/upload/item에 A.jpg
//A.jpg-->c:/upload/item에 A.jpg 이전에 존재한 A.jpg는 삭제
//파일명의 중복을 방지하기 위해서 UUID 사용
//A.jpg-->c:/upload/item에 1234567845123456.jpg
//수정 기존파일 1234567845123456.jpg 삭제
//새로운 파일을 추가 A.jpg-->c:/upload/item에 1234567845123456.jpg
@Service
public class FileService {
    //파일업로드
    //uploadFile(저장위치, 파일명(a.jpg), 파일데이터)--->새로운파일명(1236546.jpg)
    public String uploadFile(String uploadPath, String originalFileName,
                             byte[] filedata) {
        UUID uuid = UUID.randomUUID(); //난수로 이름을 생성
        //abc.jpg===>jpg 분리(이미지파일의 확장자 분리)
        String extension = originalFileName.substring(
                originalFileName.lastIndexOf("."));
        //45651233.jpg =>난수파일명에 확장자를 결합해서 새로운 파일명을 만들기(전달값)
        String saveFileName = uuid.toString()+extension;
        //c:uploaditem45651233.jpg 저장할 위치와 파일명을 결합(작업처리)
        String uploadFullUrl = uploadPath+saveFileName;

        //하드디스크에 파일 저장
        try {
            //c:upload item 45651233.jpg이름으로
            FileOutputStream fos = new FileOutputStream(uploadFullUrl);
            //파일을 저장
            fos.write(filedata);
            fos.close();
        } catch(Exception e) {

        }

        return saveFileName;
    }
    
    public void deleteFile(String uploadPath, String fileName) {
        //경로+파일명
        String deleteFileName = uploadPath+fileName;

        File deleteFile = new File(deleteFileName);
        if(deleteFile.exists()) {
            deleteFile.delete();
        }
    }
}

'개발일지' 카테고리의 다른 글

SecurityConfig  (0) 2024.04.11
LoginService  (0) 2024.04.11
movice-service  (0) 2024.04.11
member-service  (0) 2024.04.11
movie-controller  (0) 2024.04.11