-
Spring Boot 로 만드는 Upload와 Download Rest API 예제-04Java/Spring 2018. 12. 17. 15:24
이번 글에서는 파일 업로드와 다운로드에 필요한 service 단을 완성해보려고 한다.
1) Service 생성
먼저 기본 패키지 그룹에 service 패키지를 생성하고 FileUploadDownloadService 라는 클래스를 생성한다.
123456789package com.pang.fileuploaddemo.service;import org.springframework.stereotype.Service;@Servicepublic class FileUploadDownloadService {}cs @Service Annotation 을 잊지말고 추가하자
다음으로 파일이 저장될 디렉토리를 설정하고 디렉토리를 생성하는 소스를 추가한다.
Service가 실행될때 생성자에서 기존에 생성한 설정클래스인 FileUploadProperties 클래스로 기본 디렉토리를 설정하고 생성한다.
12345678910111213private final Path fileLocation;@Autowiredpublic FileUploadDownloadService(FileUploadProperties prop) {this.fileLocation = Paths.get(prop.getUploadDir()).toAbsolutePath().normalize();try {Files.createDirectories(this.fileLocation);}catch(Exception e) {throw new FileUploadException("파일을 업로드할 디렉토리를 생성하지 못했습니다.", e);}}cs 파일을 저장하는 소스를 작성한다.
1234567891011121314151617public String storeFile(MultipartFile file) {String fileName = StringUtils.cleanPath(file.getOriginalFilename());try {// 파일명에 부적합 문자가 있는지 확인한다.if(fileName.contains(".."))throw new FileUploadException("파일명에 부적합 문자가 포함되어 있습니다. " + fileName);Path targetLocation = this.fileLocation.resolve(fileName);Files.copy(file.getInputStream(), targetLocation, StandardCopyOption.REPLACE_EXISTING);return fileName;}catch(Exception e) {throw new FileUploadException("["+fileName+"] 파일 업로드에 실패하였습니다. 다시 시도하십시오.",e);}}cs 파일을 다운로드 하는 소스를 작성한다.
1234567891011121314public Resource loadFileAsResource(String fileName) {try {Path filePath = this.fileLocation.resolve(fileName).normalize();Resource resource = new UrlResource(filePath.toUri());if(resource.exists()) {return resource;}else {throw new FileDownloadException(fileName + " 파일을 찾을 수 없습니다.");}}catch(MalformedURLException e) {throw new FileDownloadException(fileName + " 파일을 찾을 수 없습니다.", e);}}cs 이상으로 service 단 소스를 완성했다.
다음은 controller 단 소스를 완성하고 테스트까지 진행해 보도록 하겠다.
2018/12/17 - [Java/Spring] - Spring Boot 로 만드는 Upload와 Download Rest API 예제-01
2018/12/17 - [Java/Spring] - Spring Boot 로 만드는 Upload와 Download Rest API 예제-02
2018/12/17 - [Java/Spring] - Spring Boot 로 만드는 Upload와 Download Rest API 예제-03
2018/12/17 - [Java/Spring] - Spring Boot 로 만드는 Upload와 Download Rest API 예제-05
'Java > Spring' 카테고리의 다른 글
Spring Boot 로 만드는 Upload와 Download Rest API - JPA - Hibernate 연결하기 (0) 2018.12.18 Spring Boot 로 만드는 Upload와 Download Rest API 예제-05 (4) 2018.12.17 Spring Boot 로 만드는 Upload와 Download Rest API 예제-03 (0) 2018.12.17 Spring Boot 로 만드는 Upload와 Download Rest API 예제-02 (1) 2018.12.17 Spring Boot 로 만드는 Upload와 Download Rest API 예제-01 (0) 2018.12.17 댓글