JSP - 파일 업로드
05 Mar 2021 | JSPJSP - 파일 업로드
-
form 태그
<form method="post" enctype="multipart/form-data"> <input type="file" name="filename" /> </form>
- form 태그의 인코딩 타입을 multipart/form-data로 지정한다. get, post 방식은 용량이 제한되어있기 때문이다
- 이렇게 하면 일반적으로 2GB까지 업로드가 가능하다
- 서버에서는 넘어온 데이터를 받아서 파일로 만드는 작업을 하게 된다
-
COS 라이브러리
- www.servlets.com 에 접속하여 cos 라이브러리를 다운받는다
- MultipartRequest의 생성자
- MultipartRequest의 메소드
<%@ page import="com.oreilly.servlet.MultipartRequest" %> <%@ page import="com.oreilly.servlet.multipart.*" %> <%@ page import="java.util.*" %> <% String uploadPath = application.getRealPath("upload"); int size = 10*1024*1024; String name = ""; String subject = ""; String fileName1 = ""; String originalName1 = ""; try { MultipartRequest multi = new MultipartRequest(request, uploadPath, size, "utf-8", new DefaultFileRenamePolicy()); name = multi.getParameter("name"); subject = multi.getParameter("subject"); Enumeration files = multi.getFileNames(); String file1 = (String) files.nextElement(); fileName1 = multi.getFilesystemName(file1); originalName1 = multi.getOriginalFileName(file1); } catch(Exception e) { e.printStackTrace(); } %> <body> <form name="filecheck" action="fileCheck.jsp" method="post"> <input type="hidden" name="name" value="<%=name %>" /> <input type="hidden" name="subject" value="<%=subject %>" /> <input type="hidden" name="filename1" value="<%=fileName1 %>" /> <input type="hidden" name="originalname1" value="<%=originalName1 %>" /> </form> <a href="#" onClick="javascript:filecheck.submit()">업로드 확인 및 다운로드 페이지 이동</a> </body>
<% request.setCharacterEncoding("utf-8"); String name = request.getParameter("name"); String subject = request.getParameter("subject"); String fileName1 = request.getParameter("filename1"); String originalName1 = request.getParameter("originalname1"); %> <body> 올린이 : <%=name %><br> 제목 : <%=subject %><br> 파일명1 : <%=originalName1 %><br> </body>
-
자카르타 FileUpload API를 이용한 파일 업로드
- http://commons.apache.org/proper/commons-fileupload/download_fileupload.cgi https://commons.apache.org/proper/commons-io/download_io.cgi
- 라이브러리를 다운받는다
- 파일을 서버에 올리면 서버의 지정된 폴더에 저장하고 그걸 복사해오는 방식을 이용
- FileUpload API 사용방법
- FileUpload.isMultipartContent() 메소드로 웹 브라우저가 Multipart/form-data 인코딩 타입으로 데이터를 전송했는지 판단한다
- multipart/form-data 인코딩 타입인 경우 DiskFileUpload 객체를 생성한다
- DiskFileUpload.parseRequest() 메소드를 사용해 웹 브라우저가 전송한 데이터를 추출한다
- DiskFileUpload.parseRequest() 메소드가 리턴한 FileItem 목록을 사용해 파일 및 파라미터를 처리한다
- DiskFileUpload 관련 메소드
- FileItem 관련 메소드
- 서버에서는 일반적으로 FileItem.write(File file) 메소드로 업로드를 처리한다
- 업로드 처리가 완료되는 순간 임시파일을 삭제하고 싶으면 FileItem.delete() 메소드를 사용한다
참고 자료
KG 아이티뱅크 강의 자료
처음해보는 JSP&Servlet 웹 프로그래밍