파일업로드
- try -with -resource 구문은 close 함수를 자동으로 호출해준다.
- 고려사항
- 중복된 파일을 올리면 안된다.
- 하나의 폴더에 너무 많은 파일이 저장되면 관리하기 어렵다. 년/월/일 폴더를 만들고 uuid 파일이름으로 생성한다.
- 윈도우는 디렉토리 구분자가 '\' 이고 unix계열은 디렉토리 구분자가 '/' 이다. File.separtor을 통해 이용하여 디렉토리를 구분해야한다.
- 파일은 한번에 업로드처리 하는것이 아니다. Stream을 통해 올려야 한다. file.getbyets()는 파일을 한번에 읽어서 처리하므로 사용하지 않는다.
- 초창기에는 http, mail도 txt로 주고받았다.
- 외부에서는 직접 접근하면 안된다. ex) jsp를 업로드
- Multipart 를 이용한다.
- 서블릿
- HttpServletRequest는 파일업로드를 지원하지 않는다.
- 사용자가 파싱을 해야한다.
- 별로의 라이브러리를 사용해야한다.
- HTML Multipart
- <form action="/upload" method="post" enctype="multipart/form-data"> 설정을 추가해야한다.
- 라이브러리
- commons-io , commons-fileupload 라이브러리를 통해 업로드 할수 있다.(다른 라이브러리도 가능)
- Spring
- multipartresolver Bean을 등록 해야한다.
@Bean
public MultipartResolver multipartResolver() {
CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver();
multipartResolver.setMaxUploadSize(10485760); // 1024 * 1024 * 10
return multipartResolver;
}
- @requestparam, multipartfile 을 통해 파일정보를 얻을수 있다.
- ex ) @requestparam("file) multipartfile file
- Download읽어들인 파일정보를 브라우저에게 출력한다.
- 파일정보를 reponse를 이용하여 직접 출력하겠다.
- header에 Content-Disposition, Content-Transfer-Encoding 속성이 있으면 파일이 다운로드된다. 2개의 속성이 없으면 브라우저에서 파일 및 이미지를 보여준다.
- @ResponseBody를 붙여주고 HttpServletResponse response를 파라미터로 주입받는다.
0 개의 댓글:
댓글 쓰기