[JSP]파일 업로드

2023. 12. 18. 15:21· 공부/JSP
목차
  1. 파일 업로드의 개요
  2. 파일 업로드(file upload)
  3. 파일 업로드를 위한 JSP 페이지 규칙
  4. 파일 업로드 처리 방법
  5. MultipartRequest를 이용한 파일 업로드
  6. MultipartRequest
  7. MultipartRequest 클래스 생성
  8. MultipartRequest 생성자의 매개변수
  9. MultipartRequest 메소드의 종류
반응형

파일 업로드의 개요

파일 업로드(file upload)

  • 웹 브라우저에서 서버로 파일을 전송하여 서버에 저장하는 것
  • 서버로 업로드할 수 있는 파일
    • 텍스트 파일, 바이너리 파일, 이미지 파일, 문서 등 다양한 유형이 있다.
  • 웹 브라우저에서 서버로 파일을 전송하기 위해 JSP 페이지에 폼 태그 사용
  • 전송된 파일을 서버에 저장하기 위해 오픈 라이브러리 이용

파일 업로드를 위한 JSP 페이지 규칙

<form action="JSP페이지.JSP" method="POST" enctype="multipart/form-data">
	<input type="file" name="요청 파라미터 이름">
</form>
  • form 태그의 method 속성은 반드시 POST 방식으로 설정
  • form 태그의 enctype 속성은 반드시 multipart/form-data로 설정
  • form 태그의 action 속성은 파일 업로드를 처리할 JSP 파일로 설정
  • 파일 업로드를 위해 input 태그의 type 속성을 file로 설정
    • 만약 여러 파일을 업로드하려면 2개 이상의 input 태그를 사용하고 name 속성에 서로 다른 값을 설정

enctype=“multipart/form-data“ 로 전송했을때 request 객체로 전송된 파라미터 값을 얻어낼 수 없음. 예) request.getParamerter()

파일 업로드 처리 방법

  • 단순한 자바 코드로 작성하여 처리할 수 없어 오픈 라이브러리인 cos.jar나 commonsfileupload.jar를 사용해야 함

Untitled.png

MultipartRequest를 이용한 파일 업로드

MultipartRequest

  • 웹 페이지에서 서버로 업로드되는 파일 자체만 다루는 클래스
  • 웹 브라우저가 전송한 multipart/form-data 유형과 POST 방식의 요청 파라미터 등을 분석한 후 일반 데이터와 파일 데이터를 구분하여 파일 데이터에 접근
  • 한글 인코딩 값을 얻기 쉽고, 서버의 파일 저장 폴더에 동일한 파일명이 있으면 파일명을 자동으로 변경

MultipartRequest 클래스 생성

Untitled.png

<%@ page import="com.oreilly.servlet.*"%>
<%@ page import="com.oreilly.servlet.multipart.*"%>

MultipartRequest multi = new MultipartRequest(request, 
				"C:\\upload\\",// 파일 저장 경로
				5 * 1024 * 1024, "utf-8", new DefaultFileRenamePolicy());
		// maxPostSize    // encoding       // policy
  • 서버의 파일 저장 경로 : c:\upload\ 경로에 저장
  • 파일 최대 크기; : 5MB(5 *1024 * 1024)
  • 파일 인코딩 방식 : utf-8
  • 서버에 저장된 파일명 중복 처리 : DefaultFileRenamePolicy()
    • 서버에 동일한 파일이 존재하면 웹 브라우저에서 전송된 파일명 뒤에 숫자를 덧붙여 파일명 중복되지 않게 함.
    • com.oreilly.servlet.multipart.* 패키지 import 해야 사용할 수 있음.

MultipartRequest 생성자의 매개변수

Untitled.png

MultipartRequest는 javax.servlet.http.HttpServletRequest 에서 해당 타입이 지원되는데 톰캣 10에서는 jakarta.servlet.http.HttpServletRequest 를 지원해 톰캣 9로 실행하여야 함

MultipartRequest 메소드의 종류

Untitled.png

  • 웹 브라우저에서 전송되는 요청 파라미터 중
    • 일반 데이터 → getParameter( ) 메소드로 값을 받음
    • 파일 데이터인 경우 → getFileNames( ) 메소드를 이용하여 데이터를 받음

Untitled.png

Enumeration files = multi.getFileNames();
	
	while(files.hasMoreElements()) {
		String name = (String) files.nextElement();
		String filename = multi.getFilesystemName(name);
		String original = multi.getOriginalFileName(name);
		String type = multi.getContentType(name);
		File file = multi.getFile(name);


	

		out.println("요청 파라미터 이름 : " + name + "<br>");
		out.println("실제 파일 이름 : " + original + "<br>");
		out.println("저장 파일 이름 : " + filename + "<br>");
		out.println("파일 콘텐츠 타입 : " + type + "<br>");

		if (file != null) {
			out.println(" 파일 크기 : " + file.length());
			out.println("<br>");
		}

Untitled.png

반응형
  1. 파일 업로드의 개요
  2. 파일 업로드(file upload)
  3. 파일 업로드를 위한 JSP 페이지 규칙
  4. 파일 업로드 처리 방법
  5. MultipartRequest를 이용한 파일 업로드
  6. MultipartRequest
  7. MultipartRequest 클래스 생성
  8. MultipartRequest 생성자의 매개변수
  9. MultipartRequest 메소드의 종류
'공부/JSP' 카테고리의 다른 글
  • [JSP]쿠키
  • [JSP]JDBC로 데이터베이스와 JSP연동
  • [JSP]자바빈즈 액션태그
  • [JSP]서블릿과 웹 MVC
Future0_
Future0_
rm -rf /
Future0_
Luna Developer Blog
Future0_
전체
오늘
어제
  • 분류 전체보기 (112)
    • 프로그래밍 (4)
      • 알고리즘 (4)
    • 보안 (14)
      • Dreamhack (4)
      • Hackthebox (1)
      • Webhacking (9)
    • 프로젝트 (4)
    • 공부 (80)
      • Database (2)
      • Python (11)
      • System (4)
      • Java (13)
      • JSP (13)
      • Spring (11)
      • Kotlin (16)
      • 자료구조 (10)
      • 기계학습 (0)
    • Docker (4)
    • Github (2)
    • Tip (1)
    • 잡담 (2)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • 디버깅키해시
  • 자바빈즈
  • Computer science
  • Android Studio
  • SpringBoot
  • 코틀린기본문법
  • shared preference
  • 자료구조
  • React
  • dreamhack
  • api 통신
  • 보안
  • 컴퓨터
  • 프로그래밍
  • native app
  • 키 해시
  • Database
  • Java
  • 알고리즘
  • jsp
  • spring
  • 상속
  • cs
  • docker
  • ViewModel
  • android studio 삭제
  • 1.9.22
  • Python
  • webhacking
  • Kotlin

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
Future0_
[JSP]파일 업로드
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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