4 | | import java.io.*; |
---|
5 | | import javax.servlet.*; |
---|
6 | | import javax.servlet.http.HttpServletRequest; |
---|
7 | | import javax.servlet.http.HttpServletResponse; |
---|
8 | | import com.oreilly.servlet.MultipartRequest; |
---|
9 | | import com.oreilly.servlet.multipart.DefaultFileRenamePolicy; |
---|
10 | | import java.util.*; |
---|
11 | | |
---|
12 | | public class UploadServlet extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet { |
---|
13 | | // 원래 파일 업로드는 post 방식이기 때문에 goGet은 쓰이지않는다. |
---|
14 | | /* |
---|
15 | | * protected void doGet(HttpServletRequest request, HttpServletResponse |
---|
16 | | * response) throws ServletException, IOException { doPost(request, |
---|
17 | | * response); }// doGet |
---|
18 | | */ |
---|
19 | | protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { |
---|
20 | | response.setContentType("text/html;charset=UTF-8"); |
---|
21 | | PrintWriter out = response.getWriter(); |
---|
22 | | request.setCharacterEncoding("UTF-8"); |
---|
23 | | |
---|
24 | | /* |
---|
25 | | //톰캣 플러그인을 사용하는 경우 |
---|
26 | | String savePath = getServletContext().getRealPath("upfolder"); |
---|
27 | | */ |
---|
28 | | // Dynamic Web Project 의 경우 : 절대 경로를 쓴다. |
---|
29 | | String savePath = "C:/upload"; |
---|
30 | | // out.println("savePath=" + savePath);//경로 확인 |
---|
31 | | int maxSize = 100 * 1024 * 1024; // 최대 업로드 파일 크기 5MB(메가)로 제한 |
---|
32 | | try { |
---|
33 | | // 한글 파일명도 업로드 가능하다 : euc-kr |
---|
34 | | // 하지만 실제로는 한글 파일명은 처리가 불편하기 때문에 영문 파일을 쓴다. |
---|
35 | | MultipartRequest multi = null; |
---|
36 | | try{ |
---|
37 | | multi = new MultipartRequest(request, savePath, maxSize, "UTF-8", new DefaultFileRenamePolicy()); |
---|
38 | | }catch(Exception e){ |
---|
39 | | e.printStackTrace(); |
---|
40 | | } |
---|
41 | | out.println("<html>"); |
---|
42 | | out.println("<head><title>화일 업로드List</title></head>"); |
---|
43 | | out.println("<body>"); |
---|
44 | | out.println("<pre>"); |
---|
45 | | Enumeration params = multi.getParameterNames(); // 파라미터명 얻기 |
---|
46 | | // 반복문으로 모두 출력하기, 현 예제에는 하나지만 나중에 여러개일 경우을 위해 준비 |
---|
47 | | while (params.hasMoreElements()) { |
---|
48 | | String name = (String) params.nextElement(); |
---|
49 | | String value = multi.getParameter(name); |
---|
50 | | out.println(name + " : " + value); |
---|
51 | | }//while |
---|
52 | | /* |
---|
53 | | out.println("</pre>"); |
---|
54 | | out.println("<h3>업로드된 파일에 대한 설명</h3>"); |
---|
55 | | out.println("<pre>"); |
---|
56 | | out.println("<table border=1>"); |
---|
57 | | out.println("<tr>"); |
---|
58 | | out.println("<td width=150>파일명</td>"); |
---|
59 | | out.println("<td width=100>파일 크기</td>"); |
---|
60 | | out.println("<td width=150>파일의 종류</td>"); |
---|
61 | | out.println("<td width=150>파라미터명</td>"); |
---|
62 | | out.println("</tr>"); |
---|
63 | | |
---|
64 | | Enumeration files = multi.getFileNames(); // 파일명 모두 얻기 |
---|
65 | | // 반복문으로 모두 출력, 역시 여러 파일 업로드 경우를 위해 준비 |
---|
66 | | while (files.hasMoreElements()) { |
---|
67 | | String name = (String) files.nextElement(); |
---|
68 | | String fileName = multi.getFilesystemName(name); // 실제 업로드된 파일명 |
---|
69 | | String type = multi.getContentType(name); |
---|
70 | | File f = multi.getFile(name); |
---|
71 | | out.println("<tr>"); |
---|
72 | | out.println("<td>" + fileName + "</td>"); |
---|
73 | | if (f != null) { |
---|
74 | | out.println("<td>" + f.length() + "</td>"); |
---|
75 | | }// if |
---|
76 | | out.println("<td>" + type + "</td>"); |
---|
77 | | out.println("<td>" + name + "</td></tr>"); |
---|
78 | | }// while |
---|
79 | | out.println("</table>"); |
---|
80 | | out.println("</pre>"); |
---|
81 | | out.println("<h3>업로드된 파일 List</h3>"); |
---|
82 | | out.println("<pre>"); |
---|
83 | | File dirFile = new File(savePath); // 업로드 폴더 얻기 |
---|
84 | | File[] fileList = dirFile.listFiles(); // 현재 폴더의 모든 파일 리스트 얻기 |
---|
85 | | // 반복문으로 다운로드 링크 걸어주기 |
---|
86 | | for (int i = 0; i < fileList.length; i++) { |
---|
87 | | String fName = fileList[i].getName(); |
---|
88 | | out.println(fName); |
---|
89 | | }// for |
---|
90 | | out.println("<pre>"); |
---|
91 | | */ |
---|
92 | | } catch (Exception e) { |
---|
93 | | out.print("예외 발생 : " + e); |
---|
94 | | }// catch |
---|
95 | | }// doPost |
---|
96 | | }// end |
---|
97 | | }}} |
---|