cos.jar 파일 다운로드 및 설정
1.http://www.servlets.com/cos/
스크롤바를 이용해서 [Download]가 있는 곳까지 화면을 이동시킨다.
cos-05Nov2002.zip 항목을 클릭한다. 이링크를 클릭하여 파일을 다운로드 받는다.
압축 해제한다. lib폴더에 cos.jar 파일을 복사해서 톰캣홈 \webapps\study\study\WEB-INF
폴더 안에 붙혀넣기 한다.
5.x 이상인 경우 톰캣홈\commons\lib 폴더에도 붙혀넣기 한다.
2.톰캣홈\webapps\study 폴더에 업로드될 파일을 모아놓을 저장소인 filesSave 폴더를 만든다.
업로드하면 \webapps\study\fileSave 폴더에 업로드된 파일을 확인 할수있다.
cos.jar 파일의 com\oreily\servlet 폴더를 보면 MultipartRequest 클레스가 있으며, 이 클레스에서 제공되는 API를 활용하면 파일 업로드 및 폼 요소에 대한 처리를 할수 있다.
MultipartRequest의 생성자
MultipartRequest(javax.servlet.http.HttpServletRequest request, java.lang.String saveDiretory, int maxPostSize, java.lang.String ENCODING, FileRenamePolicy policy)
MultipartRequest multi = new MultiPartRequest(request, folderDirectory, 1024*10, "euc-kr", new DefaultFileRenamePolicy() );
레퍼런스명 multi이고 첫번째 인자는 request 객체이고,
두번째 인자는 업로드된 파일이 저장될 경로
세번째 인자는 업로드할 파일의 최대 크기,
네번째 인자는 인코딩 타입,
5번째 인자는 업로드 될 파일명이 기존의 파일명과 같은경우 덮어쓰기를 방지하기 위해 설정
메소드
1. getParameterNames() - return type : java.util.Enumeration
모든 파라미터 이름을 Enumeration으로 반환한다.
Enumeration params = multi.getParameterNames(); |
생성된 MultipartRequest 객체는 multi 레퍼런스를 통해서 생성된 MultipartRequest 객체가 가지고
있는 메소드를 사용할 수 있다. getParameterNames() 메소드는 폼에서 전송한 파라미터들의 이름을
Enumeration 타입으로 반환한다. 폼에 있는 input 태그중 file 속성이 아닌 모든 파라미터들의 이름
을 반환하는 메소드 이다.
2.getParameter(java.lang.String name) -return type: java.lang.String
String paramValue=multi.getParameter(java.lang.String name); |
request 객체에서 사용되는 getParameter 메소드 처럼 파라미터의 이름을 인자로 받아서 그 파라미터
의 값을 반환하는 메소드이다. 이 메소드에 전달될 인자는 getParameterNames()메소드를 통해서
얻어온 파라미터이름을 인자로 주면 그 파라미터에 담긴 값을 반환한다.
3.getFileNames() - return type: java.util.Enumeration
Enumeration filses = multi.getFileNames(); |
폼 요소중 input 태그에서 file 속성으로 지정된 태그의 name 속성의 값, 즉 file 속성을 가진 파라미터의 이름을 Enumeration 객체 타입으로 반환 한다. 예를 들면 <input type="file" name="uploadFile">
태그가 폼 요소에 있었다면 getFileNames() 메소드는 uploadFile이란 파라미터의 이름을 저장한
Enumeration 객체를 반환한다.
4.getFilesystemName() - return type: java.lang.String
String filename = multi.getFilesystemName(name); |
file속성으로 지정된 input태그에 의해 서버상에 실제로 업로드된 파일 이름을 String 객체 타입으로
반환한다. 이 메소드가 반환하는 파일명은 file 속성을 가진 input 태그에서 사용자가 지정한 파일 이름
이 아니고 사용자가 선색한 파일이 실제 서버상의 폴더에 저장되었을때의 파일명을 반환한다. 왜냐하면 업로드시 파일명이 변경될수있기때문
아래의 getOriginalFileName()메소드와 비교
5.getOriginalFileName() - return type:java.lang.String
String original = multi.getOriginalFileName(name); |
사용자가 직접 지정한 파일명을 반환한다. MultipartRequest 클래스의 생성자 중 중복된 파일을 덮어
쓰는 것을 방지하기 위해 사용되는 FileRenamePolicy 인터페이스를 구현한 DefaultFileRenamePolicy 클래스에 의해서 파일명이 변경되기전의 파일명을 반환한다.
getFileSystemName() 메소드는 기존에 업로드된 파일명들 중에 새로 업로드할 파일명이 중복될
경우 파일명 뒤에 <원 파일명1.확장자 , 원 파일명2.확장자> 식으로 변경된 이름을 반환한다.
예를 들어 업로드한 파일명이 abc.zip일 경우, 같은 파일을 중복해서 업로드하면 다음에 업로드
되는 abc.zip파일명이 abc1.zip으로 변경된다. 중복되는 경우가 없다면 원래 파일명을 반환한다.
요약하면 , getOriginalFileName()은 사용자가 지정해서 업로드되는 파일명을 반화하고,
getFileSystemName()메소드는 파일명이 중복되는 경우 변경된 파일명을 반환한다.
6.getContentType() - return type:java.lang.String
String type = multi.getContentType(name); |
getContentType()메소드는 업로드된 파일의 콘텐츠 타입을 반환한다.
7.getFile() - return type:java.io.File
File file = multi.getFile(name); |
getFile()메소드는 서버상에 업로드된 파일에 대한 객체를 반환한다.
'공부방 > JSP' 카테고리의 다른 글
[jsp] 함수들! (0) | 2009.07.23 |
---|