파일 업로드

인코딩 방식

인코딩 방식 설명
application/x-www-form-urlencoded 기본 폼 데이터 전송 방식 (문자열 인코딩)
multipart/form-data 파일 업로드 시 사용하는 인코딩 (모든 문자를 인코딩하지 않음)
text/plain 공백문자만 + 기호로 인코딩

파일 업로드 폼 (1.fileUpload.jsp)

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>파일 업로드</title>
</head>
<body>
    <h3>파일 업로드 실습</h3>
    <form action="./proc/fileUpload.jsp" method="post" enctype="multipart/form-data">
        <input type="text" name="uid" placeholder="아이디 입력"><br>
        <input type="text" name="name" placeholder="이름 입력"><br>
        <input type="file" name="file"><br>
        <input type="submit" value="파일전송">
    </form>
</body>
</html>

파일 업로드 처리 (proc/fileUpload.jsp)

1. 파일 저장 경로 설정

String uploadPath = application.getRealPath("/uploads");
File uploadDir = new File(uploadPath);
if (!uploadDir.exists()) {
    uploadDir.mkdir();
}

2. 파일 업로드 객체 생성 및 설정

DiskFileItemFactory factory = DiskFileItemFactory.builder().get();
JakartaServletFileUpload<DiskFileItem, DiskFileItemFactory> upload = new JakartaServletFileUpload<>(factory);
upload.setSizeMax(1024 * 1024 * 10); // 최대 10MB 설정

3. 파일 업로드 요청 파싱