본문 바로가기

JSP(Java Server Page)

cos.jar 이용하여 파일 업로드 (미완 여러 파일 업로드)

파일 업로드에는 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으로 여러개 넘어올때

위와 같이 받으면 된다.