스프링 MVC 2 - 정리(파일 업로드)
반응형
정리(파일 업로드)
- 파일 업로드 소개
- HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 한다.
- application/x-www-form-urlencoded
- multipart/form-data
- HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 한다.
- 프로젝트 생성
- 서블릿과 파일 업로드1
- 서블릿은 multipart를 지원한다. 그래서 request.getParts()를 하면 part를 받을 수 있다.
- 이것을 사용하려면 spring.servlet.multipart.enabled=true로 켜져있어야 한다. 이것이 꺼져있으면 WAS자체가 이것은 multipart를 사용하지 않는구나 하고서 아예 기능을 지원하지 않게된다.
- 서블릿과 파일 업로드2
- 서블릿이 제공하는 Part에 대해 알아보았다.
- 먼저 application.properteis에 내가 업로드할 파일 경로를 설정했었다. file.dir=업로드 경로 설정
- Part의 주요 메서드들을 이용해서 편리하게 저장할 수 있따.
- part.getSubmittedFileName() : 클라이언트가 전달한 파일명
- part.getInputStream() : Part의 전송 데이터를 읽을 수 있다.
- part.write(...) : Part를 통해 전송된 데이터를 저장할 수 있다.
- 스프링과 파일 업로드
- @RequestParam MultipartFile file 이라는 것을 사용
- MultipartFile 주요 메서드
- file.getOriginalFilename() : 업로드 파일 명
- file.transferTo(...) : 파일 저장
- 예제로 구현하는 파일 업로드, 다운로드
- 실제 이미지를 불러오고, 첨부파일을 다운로드 할 수 있도록 구현해 보았다.
- 핵심은, 데이터베이스에 이미지 바이너리를 다 올리지 않는다는 것이다.
파일은 AWS쓰면 S3, 혹은 서버에는 어떤 특정한 경로에 저장을 해놓는 등 여러가지 방식이 있는데,
기본적으로 어떤 디렉토리에 저장을 하고, 그 보관된 경로만 데이터베이스에 저장한다.
경로도 전체경로를 저장하는 것이 아닌, 기본 베이스경로는 애플리케이션 어딘가에 저장을 해놓고,
실제 데이터 베이스에는 그이후의 짧은 경로만 저장한다. - 이미지를 보여줄 때는, 데이터베이스에 저장해둔 uuid+파일형태를 이용해서 실제 바이너리데이터를 웹브라우저에 전송해주고,
고객에게 보여주는 해당 파일의 이름은 고객이 업로드할 때 사용한 이름을 보여주도록 한다. - 파일을 다운로드 받을 수 있게 하기 위해서는
contentDisposition이라는 헤더에 "attachment; filename=\"" + encodeUploadFileName + "\""; 를 넣어줘야한다.
- 정리
반응형
'Spring' 카테고리의 다른 글
스프링 MVC 2 - 예제로 구현하는 파일 업로드, 다운로드 (0) | 2022.10.20 |
---|---|
스프링 MVC 2 - 스프링과 파일 업로드 (0) | 2022.10.19 |
스프링 MVC 2 - 서블릿과 파일 업로드 2 (0) | 2022.10.19 |
스프링 MVC 2 - 서블릿과 파일 업로드 1 (0) | 2022.10.14 |
스프링 MVC 2 - 프로젝트 생성(파일 업로드) (0) | 2022.10.14 |
댓글
이 글 공유하기
다른 글
-
스프링 MVC 2 - 예제로 구현하는 파일 업로드, 다운로드
스프링 MVC 2 - 예제로 구현하는 파일 업로드, 다운로드
2022.10.20 -
스프링 MVC 2 - 스프링과 파일 업로드
스프링 MVC 2 - 스프링과 파일 업로드
2022.10.19 -
스프링 MVC 2 - 서블릿과 파일 업로드 2
스프링 MVC 2 - 서블릿과 파일 업로드 2
2022.10.19 -
스프링 MVC 2 - 서블릿과 파일 업로드 1
스프링 MVC 2 - 서블릿과 파일 업로드 1
2022.10.14