728x90
반응형
1. Commons-FileUpload
▷ 파일 업로드 패키지
▷ 서버의 메모리상에서 파일 처리가 가능하도록 지원
▷ 오픈 라이브러리 commons-fileupload.jar, commons-io.jar 파일을 배포 사이트에서 직접 다운로드해서 사용
▶ 배포 사이트 : http://commons.apache.org/downloads/
▶ 다운로드 파일 : commons-fileupload-1.3.3-bin.zip, commons-io-2-6-bin.zip
▷ JSP 페이지에 page 디렉티브 태그의 import 속성을 사용하여 패키지 org.apache.commons.fileupload.*를 설정
◎ DiskFileUpload 클래스의 메소드
◎ FileItem 클래스의 메소드
◎ Commons-FileUpload를 이용하여 파일 업로드하기 예제
1. fileupload03.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>File Upload</title> </head> <body> <form action="fileupload03_process.jsp" method="post" enctype="multipart/form-data"> <p> 파 일 : <input type="file" name="filename"> <p> <input type="submit" value="파일 올리기"> </form> </body> </html>
2. fileupload03_process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="org.apache.commons.fileupload.*" %> <%@ page import="java.util.*"%> <%@ page import="java.io.*"%> <html> <head> <title>File Upload</title> </head> <body> <% String fileUploadPath = "C:\\upload"; DiskFileUpload upload = new DiskFileUpload(); List items = upload.parseRequest(request); Iterator params = items.iterator(); while(params.hasNext()){ FileItem fileItem = (FileItem) params.next(); if(!fileItem.isFormField()){ String fileName = fileItem.getName(); fileName = fileName.substring(fileName.lastIndexOf("\\") + 1); File file = new File(fileUploadPath + "/" + fileName); fileItem.write(file); } } %>
Commons-FileUpload를 통해 파일을 원하는 폴더로 옮길 수 있습니다.
◎ Commons-FileUpload를 이용하여 파일 업로드 및 정보 출력하기 예제
1. fileupload04.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>File Upload</title> </head> <body> <form name="fileForm" action="fileupload04_process.jsp" method="post" enctype="multipart/form-data"> <p> 이 름 : <input type="text" name="name"> <p> 제 목 : <input type="text" name="subject"> <p> 파 일 : <input type="file" name="filename"> <p> <input type="submit" value="파일 올리기"> </form> </body> </html>
2. fileupload04_process.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="org.apache.commons.fileupload.*" %> <%@ page import="java.util.*"%> <%@ page import="java.io.*"%> <html> <head> <title>File Upload</title> </head> <body> <% String path = "C:\\upload2"; DiskFileUpload upload = new DiskFileUpload(); upload.setSizeMax(1000000); upload.setSizeThreshold(4096); upload.setRepositoryPath(path); List items = upload.parseRequest(request); Iterator params = items.iterator(); while(params.hasNext()){ FileItem item = (FileItem) params.next(); // 일반적인 필드 입력상자 (text) if(item.isFormField()){ String name = item.getFieldName(); String value = item.getString("utf-8"); out.println(name + "=" + value + "<br>"); } else{ String fileFieldName = item.getFieldName(); // 파일의 이름 가져오기 (저장된 경로까지 포함된 이름) String fileName = item.getName(); String contentType = item.getContentType(); // 저장된 경로 삭제 (파일 이름만 저장) fileName = fileName.substring(fileName.lastIndexOf("\\") + 1); // 파일 크기 long fileSize = item.getSize(); File file = new File(path + "/" + fileName); item.write(file); out.println("------------------------<br>"); out.println("요청 파라미터 이름 : " + fileFieldName + "<br>"); out.println("저장 파일 이름 : " + fileName + "<br>"); out.println("파일 콘텐츠 유형 : " + contentType + "<br>"); out.println("파일 크기 : " + fileSize); } } %>
Commons-FileUpload는 서버의 메모리상에서 파일 처리가 가능하도록 지원하는 클래스 입니다.
MultipartRequest은 웹 페이지에서 서버로 업로드 되는 파일 자체만 다룬다는 점에서 차이가 있습니다.
이전 예제와 동일하게 하나의 파일만 올리거나 여러개의 파일을 동시에 올리는 예제를 시행해보았습니다.
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
728x90
반응형
'BackEnd > JSP' 카테고리의 다른 글
[JSP 웹 프로그래밍] 유효성 검사 2 (데이터 형식 유효성 검사) (0) | 2023.03.04 |
---|---|
[JSP 웹 프로그래밍] 유효성 검사 1 (validation) (0) | 2023.03.03 |
[JSP 웹 프로그래밍] 폼 태그 2 (textarea, 폼 데이터 처리) (0) | 2023.03.02 |
[JSP 웹 프로그래밍] 폼 태그 1 (form, input, select) (0) | 2023.03.02 |
[JSP 웹 프로그래밍] 내장 객체 3 <javax> (out 내장 객체) (0) | 2023.03.01 |