BackEnd/Java

[Java] 파일 저장 및 파일 명 특수 문자 제거

모야이거였어 2021. 12. 29. 16:38
if(files!=null){
    for (MultipartFile file : files) {
        String originalFileName = file.getOriginalFilename();

        String fileName = originalFileName.substring(0,originalFileName.lastIndexOf(".")); //이름 추출
        String extension = originalFileName.substring(originalFileName.lastIndexOf(".")+1); // JPG
        extension = extension.toLowerCase();  //확장자 소문자 변환 JPG -> jpg

        String match = "[^\uAC00-\uD7A3xfe0-9a-zA-Z\\s]";
        fileName = fileName.replaceAll(match, " "); //파일 이름 특수문자 제거
        fileName = fileName.replaceAll("\\s+",""); //파일 이름 공백 제거

        String saveFileName = userSeq + "-" + System.currentTimeMillis()+"-"+fileName+"."+extension;

        File dest = new File(savePath + "/" + saveFileName);
        file.transferTo(dest);
        String url = dest.getName();
        
        // 이미지 파일 종류 제한 등에 사용
        if(extension.equals("jpg")
                || extension.equals("jpeg")
                || extension.equals("gif")
                || extension.equals("png")
                || extension.equals("bmp")) {
        }else if(extension.equals("avi")
                || extension.equals("wmv")
                || extension.equals("mpeg")
                || extension.equals("mpg")
                || extension.equals("mkv")
                || extension.equals("mp4")
                || extension.equals("divx")) {
            //허가되지 않은 확장자 예외 처리
            throw new CNotAllowedExtension();
        }else{
            // 비지정 확장자의 경우 에러 처리 필요 , 사이즈도 검증 필요
            throw new CUnknownExtension();
        }
        user.setProfileImage(url);
    }
}