pom.xml
<!-- fileUpload/download --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> | cs |
web.xml
<filter> <filter-name>springMultipartFilter</filter-name> <filter-class>org.springframework.web.multipart.support.MultipartFilter</filter-class> </filter> <filter-mapping> <filter-name>springMultipartFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> | cs |
dispatcher-servlet.xml
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="52428800"/> <!-- 50MB --> <property name="maxInMemorySize" value="1048576"/> <!-- 1MB --> </bean> | cs |
FileUtils.java
//다중 파일 업로드 public List<FileVO> multiUploadFile(MultipartHttpServletRequest request) throws IllegalStateException, IOException { List<FileVO> filelist = new ArrayList<BoardVO>(); //file이라는 파라미터를 리스트로 받음 List<MultipartFile> uploadFileList = request.getFiles("file"); for (int i = 0; i < uploadFileList.size(); i++) { //파일 원래이름 String oriFileName = uploadFileList.get(i).getOriginalFilename(); if ((oriFileName != null) && (!oriFileName.equals(""))) { String ext = ""; //확장자 구분 int index = oriFileName.lastIndexOf("."); if (index != -1) { ext = oriFileName.substring(index); } //파일 저장이름 String saveFileName = "File-" + UUID.randomUUID().toString()+ ext; //파일 저장 uploadFileList.get(i).transferTo(new File("저장경로" + saveFileName)); filelist.add(i, new BoardVO()); filelist.get(i).setFileOrgName(oriFileName); filelist.get(i).setFileSaveName(saveFileName); } } return filelist; } //파일 다운로드 public void downloadFile(FileVO fileVO, HttpServletRequest request, HttpServletResponse response) throws Exception { File file = new File("저장경로", fileVO.getFileSaveName()); BufferedInputStream in = new BufferedInputStream(new FileInputStream(file)); //User-Agent : 어떤 운영체제로 어떤 브라우저를 서버( 홈페이지 )에 접근하는지 확인함 String header = request.getHeader("User-Agent"); String fileName; if ((header.contains("MSIE")) || (header.contains("Trident")) || (header.contains("Edge"))) { //인터넷 익스플로러 10이하 버전, 11버전, 엣지에서 인코딩 fileName = URLEncoder.encode(boardfile.getFileOrgName(), "UTF-8"); } else { //나머지 브라우저에서 인코딩 fileName = new String(boardfile.getFileOrgName().getBytes("UTF-8"), "iso-8859-1"); } //형식을 모르는 파일첨부용 contentType response.setContentType("application/octet-stream"); //다운로드와 다운로드될 파일이름 response.setHeader("Content-Disposition", "attachment; filename=\""+ fileName + "\""); //파일복사 FileCopyUtils.copy(in, response.getOutputStream()); in.close(); response.getOutputStream().flush(); response.getOutputStream().close(); } | cs |
참조 : http://androphil.tistory.com/330
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rte2:fdl:file_download
'SPRING' 카테고리의 다른 글
스프링 파일 업로드 추가사항 (0) | 2018.03.27 |
---|---|
스프링에서 한글 인코딩 (0) | 2018.03.26 |
스프링 시큐리티 적용시키기 (1) | 2018.03.05 |