본문 바로가기
JSP/정리

[jsp] 파일 업로드

by 미네밍 2017. 1. 18.

<파일 업로드>


먼저, 파일 업로드 라이브러리를 설치 해주어야 한다.

1. http://www.servlets.com 에 들어간다.

2. com.oreily.servlet 를 누르고

3. 맨 밑의 zip 파일을 다운로드 한다.

4. 다운로드 받은 라이브러리 (coz.jar) 를 프로젝트의 WEB-INF > lib 에 복사한다.



1
2
3
4
<form action="fileFormOk.jsp" method="post" enctype="multipart/form-data">
        파일 : <input type="file" name="file"> <br/>
        <input type="submit" value="업로드"/>
</form>
cs


이와 같이 form을 만들어 주면, 파일을 업로드 할 수 있게 나온다.

enctype을 multipart/form-data로 설정해 주어야 한다는 것과 input type 을 file 로 해주는 것을 주의해야 한다.


1
2
3
<%@ page import="java.util.Enumeration" %>    
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
cs

라이브러리를 복사해 주었으니, jsp 파일에 다음과 같이 import 시켜준다.


1
2
3
4
String path = request.getRealPath("fileFolder"); //파일이 저장되는 경로
int size= 1024 * 1024 * 10//10M
String file = ""// 내가 업로드한 파일의 이름
String oriFile=""// 같은 이름의 파일이 존재할 시 삭제되지 않게 하기 위해 1,2,3,4.. 붙인다. 실제로 이름 변경되기 전 실제 이름 
cs


다음과 같이 경로를 설정해주고, 파일의 사이즈, 이름과 관련된 변수들을 선언해준다.


1
MultipartRequest multi = new MultipartRequest(request, path, size, "EUC-KR"new DefaultFileRenamePolicy());
cs


다음과 같이 MultipartRequest 객체를 통해, 파일 업로드를 진행한다. request 변수와 path, 최대 사이즈, 파일 이름, 같은 이름의 파일이 있을 때 어떻게 할 것인지 등등을 설정해 준다.


1
2
3
4
Enumeration files = multi.getFileNames();
String str = (String) files.nextElement();
file= multi.getFilesystemName(str);
oriFile = multi.getOriginalFileName(str);
cs

위와같이 파일 이름을 변수에 저장하는 것도 가능하다.


실제 이클립스 JSP 프로젝트의 WebContent에 fileFolder가 있는데, 클라이언트 측에서 어떠한 파일을 업로드를 했을 때 그곳으로 파일이 업로드 되는 것이 아니다.


톰캣이 컴파일 되는 경로로 들어가 같은 프로젝트 이름을 가진 폴더를 들어가면, fileFolder 를 발견할 수 있다. 그곳에 업로드 한 파일이 저장된다.

'JSP > 정리' 카테고리의 다른 글

[jsp] JSTL  (0) 2017.01.20
[jsp] EL(Expression Language)  (0) 2017.01.19
[jsp] 커넥션 풀  (0) 2017.01.17
[jsp/DB] mysql 과 jsp 연동하기  (0) 2017.01.17
[jsp] 자바 빈  (0) 2017.01.10

댓글