http://commons.apache.org/lang/download_lang.cgi
여기서 commons-lang3-3.1-bin.zip다운 받자
Commons Lang 3.1 (Java 5.0+)
압축을 푼후 라이브러리 폴더에 요걸 추가하자~~
<%@ page contentType="text/html; charset=euc-kr" %> <html> <head><title>multipart 폼</title></head> <body> <form action="fileupload.jsp" method="post" enctype="multipart/form-data"> text1: <input type="text" name="text1" /> <br/> file1: <input type="file" name="file1" /> <br/> file2: <input type="file" name="file2" /> <br/> <input type="submit" value="전송" /> </form> 1. *. jsp 2. *.java 3.web.xml 4./folder/*.jsp classes폴더는 복사하지 마세요 </body> </html>
<%@ page contentType="text/html; charset=euc-kr" %> <%@ page import="java.util.Iterator"%> <%@ page import="java.util.List"%> <%@ page import="org.apache.commons.fileupload.FileItem"%> <%@ page import="org.apache.commons.fileupload.disk.DiskFileItemFactory"%> <%@ page import="org.apache.commons.fileupload.servlet.ServletFileUpload"%> <%@ page import="java.io.*"%> <html> <head><title>업로드 정보</title></head> <body> <% // 1. multipart/form-data 여부 확인 boolean isMultipart = ServletFileUpload.isMultipartContent(request); if (isMultipart) { // 2. 메모리나 파일로 업로드 데이터를 보관하는 FileItem의 Factory 설정 DiskFileItemFactory factory = new DiskFileItemFactory(); // 3. 업로드 요청을 처리하는 ServletFileUpload 생성 ServletFileUpload upload = new ServletFileUpload(factory); // 4. 업로드 요청 파싱해서 FileItem 목록 구함 List<FileItem> items = upload.parseRequest(request);//텍스트 1개/파일2개 Iterator<FileItem> iter = items.iterator(); while (iter.hasNext()) { FileItem item = iter.next(); // 5. FileItem이 폼 입력 항목인지 여부에 따라 알맞은 처리 if (item.isFormField()) {//파일이 아니다, text일 경우 String name = item.getFieldName();//text1이다.<input type="text" name="text"> String value = item.getString("euc-kr");//그 필드에 사용자가 입력한 문자 %> 요청 파라미터: <%= name %>=<%= value %> <br/> <% } else {//request에 bind된 데이터를 열거해서 하나씩 체크했는데 파일일 경우 String name = item.getFieldName();//name="file1"/> String fileName = item.getName();//내가 업로드한 파일의 이름 String contentType = item.getContentType();//업로드 타입 boolean isInMemory = item.isInMemory();//메모리에 있는가? //파일의 용량이 클 경우에는 파일을 메모리가 아니라 임시폴더에 저장합니다. long sizeInBytes = item.getSize();//파일의 사이즈 if(sizeInBytes>10){//파일을 올렸으면 /* item이 파일이므로 자바의 파일입출력 기능으로 원하는 폴더에 저장하자 */ FileOutputStream fos=null;// 파일로 데이터를 보낼 Stream 선언 InputStream is=null;//item으로 부터 데이터를 읽을 Stream 선언 try{ File file= new File("c:/"+fileName);//windows 운영체제에서만 됩니다. fos=new FileOutputStream(file);//file로 데이터를 보낼 Stream 초기화 is= item.getInputStream();//item을 읽어들일 Stream 최기화 byte[] buff=new byte[256];//256byte 씩 읽어들일 변수 선언 int len= -1; while( (len=is.read(buff)) != -1){//더이상 읽을 것이 없을때 -1을 리턴하므로 //100개 읽을때도 있고 200개의 바이트를 읽을 때도 있을 것이다. fos.write(buff, 0, len);//읽자마자 파일로 보낸다 단위는 :0번째 부터len번째 까지 } }catch(Exception e){ out.print("파일을 저장중에 예외발생"+e.getMessage()); }finally{ try{ if(fos!=null){ fos.close();//닫아 주지 않으면 파일을 변경할 수 없다. } if(is!=null) { is.close(); } }catch(Exception e){ } } }// if 파일네임!=null %> 파일 : <%= name %>, <%= fileName %>, <%= sizeInBytes %> <%= isInMemory ? "메모리저장" : "임시파일저장" %> <br/> <% } } } else { // multipart/form 아님 %> multipart/form 요청이 아님. <% } %> </body> </html>
기타 세팅 파일
08.File/pds/upload.jsp ------> c:\\pds 폴더를 만들어줘야 한다.
08.File/WEB-INF/src/pds.jocl --------->자신의 테이블 명과 호스트 이름 비번을 적어주자~
'JSP > 2012.04강의(MySQL)' 카테고리의 다른 글
7일차 filter,로그인 (0) | 2012.05.30 |
---|---|
7일차 Tiles (0) | 2012.05.30 |
6일차 답변형 게시판 (0) | 2012.05.30 |
5일차 JSTL jsp Standard Tag Library 2 (0) | 2012.05.29 |
5일차 JSTL jsp Standard Tag Library (0) | 2012.05.29 |