1️⃣ 파일 업로드 기능을 가진 jar(라이브러리) 활용
⇒ 가장 안정적이고 많이 사용된 라이브러리는 apache에서 제공된 commons 파일 업로드를 사용한다.
⇒ 아파치 사이트에서 jar 다운로드
http://jakarta.apche.org
https://commons.apache.org/ 에서 2개의 jar 다운로드
Fileupload:commons-fileupload-1.4.jar
IO: commons-io-2.13.0.jar
2️⃣ 웹 프로젝트에 jar 등록
WEB-INF
|
lib 폴더에 복사한다.
3️⃣ 파일업로드 jsp 작성 (uploadForm.jsp)
반드시 다음과 같이 설정해야 된다.
<form method="post" enctype="multipart/form-data">
4️⃣ 서블릿 작성 ( UploadServlet.java )
가. https://commons.apache.org/proper/commons-fileupload/using.html
The simplest case 내용 복사
// Create a factory for disk-based file items DiskFileItemFactory factory = new DiskFileItemFactory(); // Configure a repository (to ensure a secure temp location is used) ServletContext servletContext = this.getServletConfig().getServletContext(); File repository = (File) servletContext.getAttribute("jakarta.servlet.context.tempdir"); // Or "javax.servlet.context.tempdir" for javax factory.setRepository(repository); // Create a new file upload handler //JakartaServletDiskFileUpload upload = new JakartaServletDiskFileUpload(factory); 수정==> ServletFileUpload upload = new ServletFileUpload(factory); // Parse the request // List<DiskFileItem> items = upload.parseRequest(request); 수정==> List<FileItem> items = upload.parseRequest(request);
나. Processing the uploaded items 내용 복사//for (FileItem item : items.iterator()) { 수정==> Iterator<FileItem> iter = items.iterator(); // Process the uploaded items while (iter.hasNext() ) { FileItem item = iter.next(); if (item.isFormField()) { //processFormField(item); } else { //processUploadedFile(item); } }
다. type=text vs type=file 분리해서 작업처리
if (item.isFormField()) { // type="text" 처리 String name = item.getFieldName(); String value = item.getString(); }else{ // type="file" 처리 String fieldName = item.getFieldName(); String fileName = item.getName(); String contentType = item.getContentType(); boolean isInMemory = item.isInMemory(); long sizeInBytes = item.getSize(); }
라. 진짜 파일 저장
File f = new File("c:\\upload", fileName) ; try { item.write(f); } catch (Exception e) { e.printStackTrace(); }
📝 실습
결과
📝 한글처리 하기
결과
📝 특정경로에 파일 저장
결과
'Programming Language > SERVLET' 카테고리의 다른 글
서블릿 (servlet) -세션 관리 (session vs cookie) (0) | 2023.08.16 |
---|---|
서블릿 (servlet) - 요청 위임(forward, redirect) (0) | 2023.08.16 |
서블릿 (servlet) - DB연동 (실습2 수정,삭제) (0) | 2023.08.11 |
서블릿 (servlet) - DB연동 (실습1 등록) (0) | 2023.08.11 |
서블릿 (servlet) - DB연동 (0) | 2023.08.11 |