-
Spring MVC - Spring에서 제공하는 MultipartFile을 이용한 파일 업로드Spring/Spring MVC 2022. 2. 17. 22:19728x90반응형
Spring에서 제공하는 MultipartFile을 이용한 파일 업로드
파일 업로드는 Spring에서 제공하는 MultipartFile 인터페이스를 이용하면 Servlet으로 했던 것과는 비교할 수 없을 정도로 편리하게 이용할 수 있다.
MultipartFile 인터페이스
- getName() : 넘어온 파라미터 명
- getOriginalFilename() : 업로드 파일명
- getContentType : 파일의 ContentType
- isEmpty() : 업로드된 파일이 비어있는지 확인
- getSize() : 파일의 바이트 사이즈
- getBytes() : 바이트 배열로 저장된 파일의 내용
- getInputStream() : 파일의 내용을 읽기 위한 InputStream 반환
- transferTo() : 파일 저장
public interface MultipartFile extends InputStreamSource { String getName(); @Nullable String getOriginalFilename(); @Nullable String getContentType(); boolean isEmpty(); long getSize(); byte[] getBytes() throws IOException; @Override InputStream getInputStream() throws IOException; default Resource getResource() { return new MultipartFileResource(this); } void transferTo(File dest) throws IOException, IllegalStateException; default void transferTo(Path dest) throws IOException, IllegalStateException { FileCopyUtils.copy(getInputStream(), Files.newOutputStream(dest)); } }
MultipartFile 사용
- MultipartFile이 제공하는 메서드들을 이용하여 쉽게 파일을 업로드 할 수 있다.
@Slf4j @Controller @RequestMapping("/spring") public class SpringUploadController { @Value("${file.dir}") private String fileDir; @GetMapping("/upload") public String newFile() { return "upload-form"; } @PostMapping("/upload") public String saveFile(@ModelAttribute Form form, HttpServletRequest request) throws IOException { log.info("request={}", request); log.info("itemName={}", form.getItemName()); log.info("multipartFile={}", form.getFile()); System.out.println("-----"+form.getFile().getBytes()); if (!form.getFile().isEmpty()) { String fullPath = fileDir + form.getFile().getOriginalFilename(); log.info("파일 저장 fullPath={}", fullPath); form.getFile().transferTo(new File(fullPath)); } return "upload-form"; } @Data static class Form{ private String itemName; private MultipartFile file; } }
서블릿에서 했던 복잡한 코드들이 MultipartFile 인터페이스를 이용하면 위 코드처럼 쉽게 업로드가 가능하다.
728x90반응형'Spring > Spring MVC' 카테고리의 다른 글
Spring MVC - 파일 업로드와 다운로드 구현해보기 (0) 2022.02.18 Spring MVC - Servlet의 파일 업로드 (0) 2022.02.17 Spring MVC - Formatter 구현 및 사용 ( Formatter와 FormattingConversionService ) (0) 2022.02.17 Spring MVC - Converter 구현 및 사용 (Converter와 ConversionService) (0) 2022.02.17 String MVC - API 예외처리(ExceptionHandlerExceptionResolver, ResponseStatusExceptionResolver, DeFaultHandlerExceptionResolver) (0) 2022.02.14