Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 주님의교회
- 청주
- 글쓰기
- #청주주님의교회
- Java
- Activity
- androidstudio
- 아이콘
- CSS
- 회원가입
- Intent
- 안드로이드 AVD
- Android
- Resources
- Selector
- 프로그래밍
- Spring
- 생명주기
- 제이쿼리
- 게시판
- 자바
- 인텐트
- java 8
- 안드로이드
- 웹개발
- JavaScript
- jQuery
- 에디터
- TinyMCE
- 영성
Archives
- Today
- Total
공부하는 블로그
Spring 파일업로드 본문
파일 업로드를 해야 하는 경우 form 엘리먼트에 enctype속성을 정의한다. (게시글 올리기 form)
http://highlighttt.tistory.com/9 (참고)
1 2 3 4 5 6 | <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="104857600" /> <!-- 100 MB --> <property name="defaultEncoding" value="UTF-8" /> </bean> | cs |
pom.xml에 Dependency를 추가 한다. // 없을시에 https://mvnrepository.com/ 에서 찾아본다.
1 2 3 4 5 6 7 | <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> |
BoardController에 작성한다. (Controller File Upload Logic 추가)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | MultipartFile file = boardVO.getFile(); if( file != null && !file.isEmpty()) { File destFile = new File("d:/uploadFiles/" + file.getOriginalFilename()); //저장경로 업로드할 파일이름 /** * 자동으로 설정되는 예외처리를 그대로 실행한다. */ try { file.transferTo(destFile); } catch (IllegalStateException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } | cs |
Upload용 파일 com.ktds.common.web 에 DownloadUtil.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 | package com.ktds.common.web; import java.io.File; import java.io.FileInputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.nio.channels.Channels; import java.nio.channels.FileChannel; import java.nio.channels.WritableByteChannel; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 파일 다운로드를 유용하게 함. * Internet Explorer, Mozilia 모두 호환 * @author Minchang Jang (mc.jang@hucloud.co.kr) * */ public class DownloadUtil { private String uploadPathWithFileName; public DownloadUtil(String uploadPathWithFileName) { this.uploadPathWithFileName = uploadPathWithFileName; } /** * 파일을 다운로드 함. * @param request * @param response * @param displayFileName 다운로드 할 때 사용자에게 보여질 파일의 이름 * @throws UnsupportedEncodingException */ public void download(HttpServletRequest request, HttpServletResponse response, String displayFileName) throws UnsupportedEncodingException { File downloadFile = new File(uploadPathWithFileName); response.setContentType("application/download; charset=utf-8"); response.setContentLength( (int) downloadFile.length()); // 사용자의 브라우져 정보를 가져온다. String userAgent = request.getHeader("User-Agent"); // 사용자의 브라우저가 MicroSoft Internet Explorer 인지 확인한다. boolean internetExplorer = userAgent.indexOf("MSIE") > -1; if( !internetExplorer ) { internetExplorer = userAgent.indexOf("Gecko") > -1; } // 다운로드할 파일의 이름을 브라우져별로 가져온다. String fileName = new String(displayFileName.getBytes(), "UTF-8"); if ( internetExplorer ) { fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20"); } else { // File의 이름을 UTF-8 타입에서 ISO-8859-1 타입으로 변경한다. fileName = new String(fileName.getBytes("UTF-8"), "ISO-8859-1"); } // 브라우져가 받을 파일의 이름을 response에 등록한다. response.setHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\";"); // 브라우져가 다운로드 받은 후 Binary 파일로 생성하라고 보낸다. response.setHeader("Content-Transfer-Encoding", "binary"); FileInputStream fin = null; FileChannel inputChannel = null; WritableByteChannel outputChannel = null; try { fin = new FileInputStream(downloadFile); inputChannel = fin.getChannel(); outputChannel = Channels.newChannel(response.getOutputStream()); inputChannel.transferTo(0, fin.available(), outputChannel); } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); } finally { try { if (outputChannel.isOpen()) outputChannel.close(); } catch (Exception e) {} try { if (inputChannel.isOpen()) inputChannel.close(); } catch (Exception e) {} try { if (fin != null) fin.close(); } catch (Exception e) {} } } } | cs |
1 2 3 4 | MultipartFile file = boardVO.getFile(); UploadUtil uploadUtil = new UploadUtil("d:/uploadFiles/" + file.getOriginalFilename()); uploadUtil.uploadFile(file); | cs |
파일 업로드 하면 저장경로에 업로드가 된다.
파일 업로드 확인
BoardVO에 fileName 변수 선언 Getter Setter
read.jsp파일
이렇게 첨부파일 명이 표시된다.
'Develop > Spring' 카테고리의 다른 글
Spring 개발을 위한 STS설치 설정법 (1) (0) | 2017.09.23 |
---|---|
(Spring)ORM :MyBatis 연동 설정 (0) | 2017.09.22 |
Spring error-page (0) | 2017.09.14 |
Spring Interceptor(인터셉터) (0) | 2017.09.14 |
Static File (CSS,JS,IMG) 설정 (0) | 2017.09.13 |