티스토리 뷰
안녕하세요.
오늘은 JSP에서 파일 업로드와 다운로드를 구현해보겠습니다.
순서를 말씀드리겠습니다.
0) 준비사항
1) 업로드 폼 구현
2) 업로드 방식 구현
3) 다운로드 방식 구현
4) 결과물 확인
0. 준비사항 - cos.jar
우선 파일전송에 필요한 cos.jar 라이브러리를 사용해야합니다.
이는 서블릿 홈페이지(http://www.servlets.com/cos/)에서 직접 다운받으시는게 가장 좋습니다.
하지만 저도 첨부하여 해놓을게요! 같이 사용합시다 !
위 첨부해놓은 라이브러리를 WAS가 읽을 수 있는 위치에 있어야하는데요.
보통은 [프로젝트 경로]/ROOT/webapps/ROOT/WEB-INF/lib 에 라이브러리가 위치하니 경로에 넣어줍니다.
-rw-r--r-- 1 tomcat tomcat 57115 4월 27 12:57 cos.jar
그리고 권한도 함께 변경해줍니다!
자 이제 준비사항은 마무리됐습니다!!
1. 업로드 폼 구현
사실 거창한 폼은 필요가 없지만 필요한 속성들은 있습니다.
form 태그안에 'enctype="multipart/form-data' 라는 attribute를 부여해줘야합니다.
그리고 enctype은 method=POST 에서만 동작하기 때문에 GET방식에서는 파일전송이 불가합니다.
간략히 구현된 코드 참고 해주세요! :)
<form action="..." method="POST" enctype="multipart/form-data">
<input type="file" name="attachment" id="attachmentFile" multiple>
</form>
2. 업로드 방식 구현
구현하기 위해서는 파일이 어디에 저장될 것인지를 정해야합니다.
이는 웹서비스 접근 경로가 아닌 물리적인 경로를 적어줘야해요.
저는 윈도우즈서버가 아닌 리눅스 서버에서 작업하기 때문에 작업경로가 다를 수 있다는 점 각자 확인!
String realPath = "/opt/tomcat/latest/webapps";
그리고 파일의 최대 용량을 지정해야합니다.
int maxSize = 1024 * 1024 * 10; // KB * MB * GB
이는 파일 업로드시 프론트단에서 용량체크를 한 번 더 해주면 좋을 것 같네요?
자, 이제 본격적으로 MultipartRequest 객체를 생성해봅시다. 아래에 파라미터 역할을 한 번 알아보죵..
MultipartRequest multi = new MultipartRequest(request,
realPath,
maxSize,
"utf-8",
new DefaultFileRenamePolicy());
| 1 | request | form태그에서 가져온 인자를 얻기위한 request 객체 전달 |
| 2 | realpath | 업로드 될 파일의 위치 / 위에서 정의 |
| 3 | maxSize | 파일 업로드 최대 용량의 크기 / 최대 용량을 넘을 경우 exception 발생 |
| 4 | utf-8 | 한글 이름이 넘어올 경우 문제가 되지 않게 incoding 지정 |
| 5 | new DefaultFileRenamePolicy() | 같은 파일을 업로드할 경우 중복되지 않게 파일 이름을 변환해주는 기능 |
아래 코드를 통해 file로 입력한 값들을 다 가지고 옵니다.
Enumeration<?> files = multi.getFileNames();
if (files.hasMoreElements()) { // = rs.next()
element = (String)files.nextElement(); // file을 반환
filesystemName = multi.getFilesystemName(element); // 서버에 업로드된 파일명을 반환
originalFileName = multi.getOriginalFileName(element); // 사용자가 업로드한 파일명을 반환
contentType = multi.getContentType(element); // 업로드된 파일의 타입을 반환
length = multi.getFile(element).length(); // 파일의 크기를 반환 (long타입)
}
'SpringBoot' 카테고리의 다른 글
| [SpringBoot] getReader 오류 발생 (해결) (2) | 2024.12.02 |
|---|---|
| [Springboot] 400에러페이지 설정하기 (0) | 2023.07.05 |
| [JavaScript] 프로그래머스 - 코딩테스트 준비(1) | 달리기 경주 (0) | 2023.05.03 |
| [JavaScript] eval 이란 함수 (0) | 2023.05.02 |
| [HTML] 정규식 패턴 (0) | 2023.04.13 |
- Total
- Today
- Yesterday
- csv업로드
- 유에이치스위트
- 재귀구문
- 논클러스터 인덱스
- 디너요리추천
- 신사동이자카야
- xcrunerror
- csv다운로드
- 디비개발프로세스
- 권한별메뉴만들기
- 유에이치스위트서울스퀘어
- 시청역놀곳
- springboot
- 판교테크원타워맛집
- cachedbodyhttpservletrequest
- 데이터베이스
- menu만들기
- 시청역숙소
- 오리지널팬케이스하우스
- 500에러관리
- 데이터업로드
- 바디캐싱
- 스프링부트
- MySQL
- 사용자별메뉴
- MAC
- 컬럼타입변경
- 오리지널팬케이스하우스 판교점
- 400에러관리
- httpcode
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |