Server

Servlet+JSP STEP 1 - File UPLOAD

2023. 5. 11. 17:27
728x90

★ File UPLOAD 라이브러리 :  cos.jar파일 다운로드

  • http://www.servlets.com/cos/
 

Servlets.com | com.oreilly.servlet

 

www.servlets.com

  • cos-22.05.zip 다운

 

★ File 업로드/다운로드

  • 클라이언트 > (복사) > 서버 : 업로드
  • 서버 > (복사) > 클라이언트 : 다운로드
  • 파일 업로드 라이브러리 : cos.jar

 

■ 필요 파일들

- "com.test.file" > "FileTest.java" //서블릿
				> "FileTestOk.java"
- webapp > "file" > "filetest.jsp"	//jsp
				 > "filetestok.jsp"

 

■ FileTest.java : Servlet 페이지

package com.test.file;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/filetest.do")
public class FileTest extends HttpServlet {

   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

      //FileTest.java

      RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/file/filetest.jsp");
      dispatcher.forward(req, resp);
   }

}

 

■ filetest.jsp : jsp파일

  • 파일 업로드는 반드시 POST 메소드를 사용한다.
<%@ 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>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>

</style>
</head>
<body>
   <!-- filetest.jsp -->
   <h1>파일 업로드</h1>
   
   <!--  
      파일 업로드는 반드시 POST 메소드를 사용한다.   
      - enctype="application/x-www-form-urlencoded" > 모두 문자열
      - enctype="multipart/form-data" > 문자열 + 이진 데이터
   -->
   
   <form method="POST" action="/jsp/filetestok.do" 
         enctype="multipart/form-data">   
   <table>
      <tr>
         <th>텍스트</th>
         <td><input type="text" name="txt"></td>
      </tr>
      <tr>
         <th>파일</th>
         <td><input type="file" name="attach"></td>
      </tr>
   </table>
   
   <div>
      <input type="submit" value="업로드">
   </div>
   </form>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>

</script>
</body>
</html>

 

■ FileTestOk.java : 파일 가져오기

package com.test.file;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
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("/filetestok.do")
public class FileTestOk extends HttpServlet {

   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

      //FileTestOk.java
      
      //문자열 데이터 가져오기
      //첨부 파일 가져오기
      
      //System.out.println("문자열: " + req.getParameter("txt"));
      
      //cos.jar
      //- Request > (교체) > MultipartRequest
      
      
      req.setCharacterEncoding("UTF-8");
      
      try {
      
         
         System.out.println(req.getRealPath("/uploads"));
         
         MultipartRequest multi = new MultipartRequest(
                              req,
                              req.getRealPath("/uploads"),
                              1024 * 1024 * 100,
                              "UTF-8",
                              new DefaultFileRenamePolicy()
                           );
         
         //데이터 가져오기
         String txt = multi.getParameter("txt");
         
         String orgfilename = multi.getOriginalFileName("attach");
         String filename = multi.getFilesystemName("attach");
         
         req.setAttribute("txt", txt);
         req.setAttribute("orgfilename", orgfilename);
         req.setAttribute("filename", filename);
         
      } catch (Exception e) {
         e.printStackTrace();
      } 
      
      
      
      RequestDispatcher dispatcher = req.getRequestDispatcher("/WEB-INF/file/filetestok.jsp");
      dispatcher.forward(req, resp);
   }

}

 

■ filetestok.jsp

<%@ 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>
<link rel="stylesheet" href="https://me2.do/5BvBFJ57">
<style>

</style>
</head>
<body>
	
	<h1>결과</h1>
	
	<div>
		
		<div>txt : ${txt}</div>
		<div>orgfilename : ${orgfilename}</div>
		<div>filename : ${filename}</div>
		
		<hr>
		<div>다운로드 : <a href="/jsp/uploads/${filename}" download > ${filename}</a></div>
	</div>



<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.4/jquery.min.js"></script>
<script>
</script>
</body>
</html>

 

★ 실행 결과

  • 파일 업로드

  • 파일 업로드 확인

업로드 확인

  • 다운로드 클릭 시 : 파일 다운로드

728x90
저작자표시 비영리 변경금지 (새창열림)

'Server' 카테고리의 다른 글

Servlet + JSP STEP 3 - 이미지 뷰어(갤러리)  (0) 2023.05.12
Servlet + JSP STEP 2 - FileProject  (0) 2023.05.12
JSTL STEP 1 - JSTL 기초 셋팅 및 응용  (0) 2023.05.11
JSP STEP 11 - JSP Model 2 + EL + JSTL  (0) 2023.05.11
JSP STEP 10 - JSP Model  (2) 2023.05.11
'Server' 카테고리의 다른 글
  • Servlet + JSP STEP 3 - 이미지 뷰어(갤러리)
  • Servlet + JSP STEP 2 - FileProject
  • JSTL STEP 1 - JSTL 기초 셋팅 및 응용
  • JSP STEP 11 - JSP Model 2 + EL + JSTL
IT의 큰손
IT의 큰손
IT계의 큰손이 되고 싶은 개린이의 Log 일지
Developer Story HouseIT계의 큰손이 되고 싶은 개린이의 Log 일지
IT의 큰손
Developer Story House
IT의 큰손
전체
오늘
어제
  • 분류 전체보기 (457)
    • 정보처리기사 필기 (18)
    • 정보처리기사 실기 (12)
    • 정보처리기사 통합 QUIZ (12)
    • 빅데이터 (11)
    • 안드로이드 (11)
    • 웹페이지 (108)
    • 자바 (49)
    • SQLD (3)
    • 백준 알고리즘 (76)
    • 데이터베이스 (41)
    • 깃허브 (2)
    • Library (14)
    • Server (31)
    • 크롤링&스크래핑 (3)
    • Spring (23)
    • Vue.js (13)
    • React (27)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

  • Developer Stroy House

인기 글

태그

  • 알고리즘
  • React
  • 개발자
  • DB
  • 데이터베이스
  • JavaScript
  • jsp
  • 웹개발
  • 코딩테스트
  • 자바
  • java
  • 정보처리기사
  • 앱개발자
  • jquery
  • 정보보안전문가
  • it
  • ajax
  • IT개발자
  • css
  • 백준
  • 프론트엔드
  • 웹페이지
  • 개발블로그
  • 정보처리기사필기
  • 백엔드
  • DBA
  • IT자격증
  • IT자격증공부
  • 웹개발자
  • html

최근 댓글

최근 글

Designed By hELLO
IT의 큰손
Servlet+JSP STEP 1 - File UPLOAD
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.