목록Java, SpringBoot 추가 공부/파일 업로드 (5)
코드 그라데이션
파일 업로드 & 다운로드 예제 요구사항 1) 상품을 관리 상품 이름 첨부파일 하나 이미지 파일 여러개 2) 첨부파일을 업로드 다운로드 할 수 있다. 3) 업로드한 이미지를 웹 브라우저에서 확인할 수 있다. Item - 상품 도메인 package inflearn.upload.domain; import lombok.Data; import java.util.List; @Data // 예제이므로 @Data public class Item { private Long id; private String itemName; private UploadFile attachFile; private List imageFiles; } ItemRepository - 상품 리포지토리 package inflearn.upload.dom..
스프링과 파일 업로드 스프링은 MultipartFile 이라는 인터페이스로 멀티파트 파일을 매우 편리하게 지원한다. SpringUploadController @Slf4j @Controller @RequestMapping("/spring") // 이 컨트롤러의 요청 매핑(prefix)을 "/spring"으로 지정합니다. public class SpringUploadController { @Value("${file.dir}") // 스프링의 프로퍼티에서 값을 읽어와서 변수에 주입. private String fileDir; // 파일을 저장할 디렉토리 경로를 저장하는 변수. @GetMapping("/upload") public String newFile() { return "upload-form"; } @P..
서블릿과 파일 업로드2 서블릿이 제공하는 Part 에 대해 알아보고 실제 파일도 서버에 업로드 해보자. 1. 먼저 파일을 업로드를 하려면 실제 파일이 저장되는 경로가 필요하다. - 해당 경로에 실제 폴더를 만들어두자. - 그리고 다음에 만들어진 경로를 입력해두자. 나의 저장 경로 C:\Inflearn_Spring\file application.properties 에 파일 업로드 경로 설정 예시 내 application.properties file.dir=C:/Inflearn_Spring/file 주의 cf. 2번의 경우 요즘은 굳이 안 넣어도 되나봄. 특히 windows는 \\ 로 구분을 했으나, 요즘에는 / 로 써도 스프링이 전부 호환해줌. ServletUploadControllerV2 @Slf4j @..
controller/ServletUploadController @Slf4j @Controller @RequestMapping("/servlet/v1") public class ServletUploadControllerV1 { @GetMapping("/upload") public String newFile() { return "upload-form"; } @PostMapping("/upload") public String saveFileV1(HttpServletRequest request) throws ServletException, IOException { log.info("request={}", request); // 로깅을 통해 HTTP 요청 객체(request)를 출력한다. String itemNa..
일반적으로 사용하는 HTML Form을 통한 파일 업로드를 이해하려면 먼저 폼을 전송하는 다음 두 가지 방식의 차이를 이해해야 한다. HTML 폼 전송 방식 application/x-www-form-urlencoded 방식 application/x-www-form-urlencoded 방식은 HTML 폼 데이터를 서버로 전송하는 가장 기본적인 방법이다. Form 태그에 별도의 enctype 옵션이 없으면 웹 브라우저는 요청 HTTP 메시지의 헤더에 다음 내용을 추가한다. Content-Type: application/x-www-form-urlencoded 그리고 폼에 입력한 전송할 항목을 HTTP Body에 문자로 username=kim&age=20 와 같이 & 로 구분해서 전송한다. 파일을 업로드 하려면..