FilesaveDir=newFile(saveDirectory); if (!saveDir.exists()) saveDir.mkdirs();
// 2. 최대크기 설정 intmaxPostSize=1024 * 1024 * 5; // 5MB 단위 byte
//3. 인코딩 방식 설정 Stringencoding="UTF-8";
//4. 파일정책, 파일이름 충동시 덮어씌어짐으로 파일이름 뒤에 인덱스를 붙인다. //a.txt //a1.txt 와 같은 형식으로 저장된다. FileRenamePolicypolicy=newDefaultFileRenamePolicy(); MultipartRequestmrequest =newMultipartRequest(request //MultipartRequest를 만들기 위한 request , saveDirectory //저장 위치 , maxPostSize //최대크기 , encoding //인코딩 타입 , policy); //파일 정책 Stringname= mrequest.getParameter("name"); FileuploadFile= mrequest.getFile("upload"); //input type="file" 태그의 name속성값을 이용해 파일객체를 생성 longuploadFile_length= uploadFile.length(); StringoriginalFileName= mrequest.getOriginalFileName("upload"); //기존 이름 StringfilesystemName= mrequest.getFilesystemName("upload"); //기존 %>
> 이름 : <%=name%><br> > 첨부된 파일명 : <%=uploadFile.getName()%><br> >>> originalFileName : <%=originalFileName%> <br> >>> filesystemName : <%=filesystemName%> <br> > 첨부된 파일 크기 : <%=uploadFile_length%> bytes <br>
꼭 type="file" 이 아니더라도 getParameter()메서드로 파라미터값을 얻어올 수 있다.
출력값
1 2 3 4 5
> 이름 : 홍길동 > 첨부된 파일명 : data1.txt >>> originalFileName : data.txt >>> filesystemName : data1.txt > 첨부된 파일 크기 : 9223 bytes
이클립스에서 사용할 경우 실제 저장 위치가 contextpath아래에 저장되는 것 이 아닌 이클립스 프로젝트 전용으로 사용하는 파일 저장 경로에 저장된다. 실제위치 C:\Class\JSPClass\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\jspPro\days23\upload
1 2
data.txt data1.txt
contextPath 까지의 실제 파일 시스템 경로를 얻고 싶다면 request.getContextPath() 함수 사용.
new MultipartRequest() 생셩자가 예외발생없이 끝나면 파일은 실제 시스템에 저장되어 있는 상태이고 여러개의 input type="file" 태그를 통해 파일을 동시에 여러개 저장도 가능하다.
단 각각의 파일을 별도의 디렉토리에 저장하는 것은 불가능… saveDirectory에 설정한 대로만 저장 가능하다.