파일 업로드에는 cos.jsr 라는 라이브러리가 필요하다.
해당 라이브러리를 lib폴더에 넣은 후에 작업
jsp에서는 form태그의 속성에 enctype="multipart/form-data" 이라고 설정해 준다
enctype을 설정하면 HttpServletRequest객체로 받질 못한다.
cos.jar에서 제공해주는
MultipartRequest 객체를 이용하여 받도록하자.
MultipartRequest multi = new MultipartRequest(req, uploadDir, 5 * 1024 * 1024, "utf-8", new DefaultFileRenamePolicy());
//MultipartRequest(request객체, 업로드할 절대경로, 파일크기, 인코딩방식, 보안관련)
위와 같이 객체를 생성하여
multil.getParameter("name");
받아오면 된다.
이미지나 파일같은 경우
multi.getFilesystemName("image");
를 사용하면 된다.
여기서 주의할점은 input 타입이 파일인 요소 여러개의 name이 모두 같다면 맨 마지막에 온 파일만 읽게된다.
따라서 파일 input의 name을 다르게 주어야하겠다.
여러 파일을 다른 name으로 주었다면 아래와 같이 받으면 되겠다.
Enumeration files = multi.getFileNames(); //파일명정보를 배열로 만들다(files에 name들이 담겨있다)
while(files.hasMoreElements()){
String name = (String)files.nextElement(); //각각의 파일 name을 String name에 담는다.
String filename = multi.getFilesystemName(name); //각각의 파일 name을 통해서 파일의 정보를 얻는다.
}
참고로 enctype으로 같이 넘어온 데이터들은
String name= multi.getParameter("name"); // 단일 name 일때
String[] name= multi.getParameterValues("name") ;// 중복 name으로 여러개 넘어올때
위와 같이 받으면 된다.
'JSP(Java Server Page)' 카테고리의 다른 글
jsp에서 포워드, 리다이렉트, forward, redirect (0) | 2014.05.26 |
---|---|
Statement 와 PreparedStatement의 차이 (0) | 2014.04.10 |
DB 데이터 갯수 읽어오기, 레코드 갯수 (0) | 2014.04.10 |
jsp에서 자바스크립트 안먹을 때 확인할 사항 (0) | 2014.03.31 |
MVC1 패턴을 이용한 간단한 게시판 구현 (0) | 2014.03.28 |