[01] 다중 파일 업로드
1. 파일 선택
>>>>> upload_multi_form.jsp
<%@ page contentType = "text/html; charset=euc-kr" %>
<html>
<head><title>파일 업로드 폼</title></head>
<body>
<html>
<head><title>파일 업로드 폼</title></head>
<body>
<form action="./upload_multi_proc.jsp" method="post"
enctype="multipart/form-data">
enctype="multipart/form-data">
이미지 파일: <input type="file" name="file1"><br>
이미지 파일: <input type="file" name="file2"><br>
이미지 파일: <input type="file" name="file3"><br>
이미지 파일: <input type="file" name="file4"><br>
이미지 파일: <input type="file" name="file5"><br>
파일 설명: <input type="text" name="param1" size="60"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
이미지 파일: <input type="file" name="file2"><br>
이미지 파일: <input type="file" name="file3"><br>
이미지 파일: <input type="file" name="file4"><br>
이미지 파일: <input type="file" name="file5"><br>
파일 설명: <input type="text" name="param1" size="60"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
2. Upload 처리
>>>>> upload_multi_proc.jsp
<%@ page contentType = "text/html; charset=euc-kr" %>
<%@ page import = "org.apache.commons.fileupload.FileItem" %>
<%@ page import = "java.io.File" %>
<%@ page import = "www.utility.*" %>
<%@ page import = "org.apache.commons.fileupload.FileItem" %>
<%@ page import = "java.io.File" %>
<%@ page import = "www.utility.*" %>
<%!
// fileItem: 전송할 파일객체
// upDir: 업로드 디렉토리
// downDir: 다운로드 디렉토리
public String sendFile(FileItem fileItem, String upDir, String downDir){
String fileName = ""; //업로드 파일명
// 파일 태그
System.out.println("전송된 파일명: " + fileItem.getName());
// fileItem: 전송할 파일객체
// upDir: 업로드 디렉토리
// downDir: 다운로드 디렉토리
public String sendFile(FileItem fileItem, String upDir, String downDir){
String fileName = ""; //업로드 파일명
// 파일 태그
System.out.println("전송된 파일명: " + fileItem.getName());
// 전송하는 파일이 있다면
if (fileItem.getSize() > 0) {
int idx = fileItem.getName().lastIndexOf("\\"); //윈도우 기반
if (fileItem.getSize() > 0) {
int idx = fileItem.getName().lastIndexOf("\\"); //윈도우 기반
if (idx == -1) { //유닉스, 리눅스 기반
idx = fileItem.getName().lastIndexOf("/");
}
//순수 파일명 추출
fileName = fileItem.getName().substring(idx + 1);
try {
//-----------------------------------------------
//대상 폴더에 저장할 파일 객체 생성, 폴더 + 파일명
//-----------------------------------------------
File uploadedFile = new File(upDir, fileName);
//올릴려는 파일과 같은 이름이 존재하면 중복파일 처리
if ( uploadedFile.exists()){
for(int k=0; true; k++){
//파일명 중복을 피하기 위한 일련 번호를 생성하여
//파일명으로 조합
uploadedFile = new File(upDir, "("+k+")"+fileName);
//조합된 파일명이 존재하지 않는다면, 일련번호가
//붙은 파일명 다시 생성
if(!uploadedFile.exists()){ //존재하지 않는 경우
fileName = "("+k+")"+fileName;
break;
}
}
}
//pilot/dataroom/storage 폴더에 파일명 저장
fileItem.write(uploadedFile);
} catch(Exception e) {
System.out.println(e.toString());
}
}
idx = fileItem.getName().lastIndexOf("/");
}
//순수 파일명 추출
fileName = fileItem.getName().substring(idx + 1);
try {
//-----------------------------------------------
//대상 폴더에 저장할 파일 객체 생성, 폴더 + 파일명
//-----------------------------------------------
File uploadedFile = new File(upDir, fileName);
//올릴려는 파일과 같은 이름이 존재하면 중복파일 처리
if ( uploadedFile.exists()){
for(int k=0; true; k++){
//파일명 중복을 피하기 위한 일련 번호를 생성하여
//파일명으로 조합
uploadedFile = new File(upDir, "("+k+")"+fileName);
//조합된 파일명이 존재하지 않는다면, 일련번호가
//붙은 파일명 다시 생성
if(!uploadedFile.exists()){ //존재하지 않는 경우
fileName = "("+k+")"+fileName;
break;
}
}
}
//pilot/dataroom/storage 폴더에 파일명 저장
fileItem.write(uploadedFile);
} catch(Exception e) {
System.out.println(e.toString());
}
}
return fileName;
}
//---------------------------------------------------------------
//Fileupload 콤포넌트 관련 코드 끝
//---------------------------------------------------------------
%>
}
//---------------------------------------------------------------
//Fileupload 콤포넌트 관련 코드 끝
//---------------------------------------------------------------
%>
<html>
<head><title>파일 업로드 처리</title></head>
<body>
<h3>
<br><br>
전송된 파일 목록<br><br>
<%
//---------------------------------------------------------------
// Fileupload 콤포넌트 관련 코드, 하나의 파일을 업로드 처리
//---------------------------------------------------------------
request.setCharacterEncoding("euc-kr");
String root = request.getContextPath(); // www_oracle
//임시 저장 폴더
String temporaryDir = application.getRealPath("/fileupload/temp");
//저장 폴더
String upDir = application.getRealPath("/fileupload/storage");
//다운로드 폴더
String downDir = root + "/fileupload/storage";
String temporaryDir = application.getRealPath("/fileupload/temp");
//저장 폴더
String upDir = application.getRealPath("/fileupload/storage");
//다운로드 폴더
String downDir = root + "/fileupload/storage";
String param1 = ""; //일반 폼 태그
FileItem fileItem = null; //업로드 파일 객체
String filename = ""; //업로드 파일명
// String fileName_enc = ""; //인코딩된 파일명
// String down = ""; //다운로드할 전체 파일명
FileItem fileItem = null; //업로드 파일 객체
String filename = ""; //업로드 파일명
// String fileName_enc = ""; //인코딩된 파일명
// String down = ""; //다운로드할 전체 파일명
// FileUpload 콤포넌트를 쓰기위한 Manager Class 생성
// request: HttpServletRequest 객체
// -1: 메모리에 저장할 최대크기 지정하지 않음
// -1: 업로드할 최대 파일크기 지정하지 않음
// temporaryDir: 임시 업로드 폴더
FileUploadRequestWrapper requestWrap = new FileUploadRequestWrapper(request, -1, -1, temporaryDir);
// request: HttpServletRequest 객체
// -1: 메모리에 저장할 최대크기 지정하지 않음
// -1: 업로드할 최대 파일크기 지정하지 않음
// temporaryDir: 임시 업로드 폴더
FileUploadRequestWrapper requestWrap = new FileUploadRequestWrapper(request, -1, -1, temporaryDir);
// Wrapping된 request객체를 할당
request = requestWrap;
request = requestWrap;
//일반 폼 태그
param1 = request.getParameter("param1");
System.out.println("이미지 설명: " + param1);
param1 = request.getParameter("param1");
System.out.println("이미지 설명: " + param1);
for(int i=1; i<=5; i++){
fileItem = requestWrap.getFileItem("file" + i);
if(fileItem != null) {
filename = sendFile(fileItem, upDir, downDir);
fileItem = requestWrap.getFileItem("file" + i);
if(fileItem != null) {
filename = sendFile(fileItem, upDir, downDir);
%>
<a href="./down.jsp?downDir=<%=downDir%>&filename=<%=filename%>">
<%=filename%>
</a>
<%
}
}
%>
</h3>
</body>
</html>
출처 : http://blog.empas.com/seeun791/22596703
<a href="./down.jsp?downDir=<%=downDir%>&filename=<%=filename%>">
<%=filename%>
</a>
<%
}
}
%>
</h3>
</body>
</html>
출처 : http://blog.empas.com/seeun791/22596703
'프로그래밍 > JAVA, Servlet, JSP' 카테고리의 다른 글
java용 날짜 구하기 팁 (0) | 2009.10.14 |
---|---|
패키지에 대한 정의 (0) | 2009.10.14 |
Cannot create JDBC driver of class '' for connect URL 'null' (0) | 2009.10.12 |
Commons-Fileupload의 한글관련 문제 추가 (1) | 2007.11.28 |
[FileUpload] File 전송(jakarta FileUpload API) (0) | 2007.11.27 |