<input type="file">
을 여러 번 기술한다.getFileNames()
메소드로 각 태그의 name값을 얻어온다. 이 메소드는 파일 목록을 Enumeration 형태로 반환한다. hasMoreElements()
와 nextElement()
를 사용해 데이터를 한 개씩 추출해 낼 수 있다.getOriginalFileName()
메소드를 사용한다.여러 파일을 한번에 업로드하기 위한 폼
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="upload2.do" method="post" enctype="multipart/form-data">
1. 파일 지정하기: <input type="file" name="uploadFile01"><br>
2. 파일 지정하기: <input type="file" name="uploadFile02"><br>
3. 파일 지정하기: <input type="file" name="uploadFile03"><br>
<input type="submit" value="전송">
</form>
</body>
</html>
여러 파일을 한번에 업로드하기 위한 서블릿
package com.sw.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.oreilly.servlet.MultipartRequest;
import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;
@WebServlet("/upload2.do")
public class MultiUploadServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
String savePath = "upload";
int uploadFileSizeLimit = 5 * 1024 * 1024;
String encType = "UTF-8";
ServletContext context = getServletContext();
String uploadFilePath = context.getRealPath(savePath);
try {
MultipartRequest multi = new MultipartRequest(
request,
uploadFilePath,
uploadFileSizeLimit,
encType,
new DefaultFileRenamePolicy());
Enumeration files = multi.getFileNames();
while(files.hasMoreElements()) {
String file = (String) files.nextElement();
String file_name = multi.getFilesystemName(file);
//중복된 파일을 업로드할 경우 파일명이 바뀐다.
String ori_file_name = multi.getOriginalFileName(file);
out.print("<br> 업로드된 파일명: " + file_name);
out.print("<br> 원본 파일명: " + ori_file_name);
out.print("<hr>");
}
}catch(Exception e) {
System.out.println("예외 발생: " + e);
}
}
}