티스토리 뷰

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();
}

 

 

 


 

 

 

📝 실습



 

 

결과

 

 

 


 

 

📝 한글처리 하기

결과

 

 

 


 

📝 특정경로에 파일 저장

 

결과
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함