여러장 파일 업로드

2020. 8. 15. 19:15·개발중/JavaServer Pages (JSP)
728x90
반응형

파일을 업로드 할 때 하나만 업로드 하는 경우는 드물다.

페이스북이던 sns에 사진을 여러개 올리는 사람들이 대부분이다.

오늘은 여러개를 업로드 하는  방법을 알아봐야지

 

이거 완전 경사 아니겠노 ! 

 

[ 02_upload.jap ]

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>[ 02_upload.jsp ]</title>
</head>
<body>
	<form action="upload2.do" method="post" enctype="multipart/form-data">
		1. 파일 지정하기 : <input type="file" name="uploadFile01">
		2. 파일 지정하기 : <input type="file" name="uploadFile02">
		3. 파일 지정하기 : <input type="file" name="uploadFile03">
		<input type="submit" value="전송">
	</form>
</body>
</html>

 

[ upload2.do ]

package com.saeyan.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Enumeration;

import javax.servlet.ServletContext;
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;

/**
 * Servlet implementation class MultiUploadServlet
 */
@WebServlet("/upload2.do")
public class MultiUploadServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public MultiUploadServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("UTF-8");
		response.setContentType("text/html; charset=UTF-8");
		PrintWriter out = response.getWriter();
		
		String savePath = "upload";
		int uploadFileSizeLimit = 5*1024*1024;
		String encType = "UTF-8";
		
		ServletContext context = getServletContext();
		String uploadFilePath = context.getRealPath(savePath);
		out.print(uploadFilePath);
		
		try {
				MultipartRequest multi = new MultipartRequest(
						request, 
						uploadFilePath, 
						uploadFileSizeLimit, 
						encType, 
						new DefaultFileRenamePolicy());
				
				Enumeration files = multi.getFileNames();
				
				while( files.hasMoreElements() ) {
					
					String file = (String)files.nextElement();
					String file_name = multi.getFilesystemName(file);
					
					String ori_file_name = multi.getOriginalFileName(file);
					
					out.print("<br>업로드된 파일명 : " + file_name);
					out.print("<br>원본 파일명      : " + ori_file_name);
                    
					String img =  uploadFilePath + "\\" + ori_file_name;
					out.print("img>>"+ img);
					out.print("	<img src=\"" + img +"\" width=200 height=200 >");
                    
					out.print("<hr>");
				}
		}catch (Exception e) {
			System.out.println("예외 발생 : " + e );
		}
	}
}

 

 

  • 파일을 받아올 때도 Enumeration file 처럼 Enumeration 타입으로 받아온다.

 

  • 여러개 업로드 할 때는 단일이랑 다르게 while문을 사용한다.  while문은 file.hasMoreElements() 로 다음 파일이 존재하는지 여부를 묻는다

 

  • new DefaultFileRenamePolicy() 를 이용해서중복된 파일이 업로드 될 경우 이름을 바꿔서 저장하도록 설정 해놨으므로 현재 업로드 된 파일명은 매번 다르다

나는 이미지를 함께 출력해보고 싶어서 

img = uploadFilePath + \ + ori_file_name 을 문자열로 생성하고 이미지 태그로 출력하는 방법을 사용했다

<img src="" + img + "" width=200 height=200>

 

 

내가 만들고 싶은 프로젝트에 대해 조금씩 가까워지는 기분이라 행복하다 끼야오!

 

 

 

728x90
반응형

'개발중 > JavaServer Pages (JSP)' 카테고리의 다른 글

단일 파일 업로드  (0) 2020.08.15
session Login  (0) 2020.08.15
파일 다운로드/ 선택  (0) 2020.08.14
화폐단위 표현  (0) 2020.08.14
Login  (0) 2020.08.14
'개발중/JavaServer Pages (JSP)' 카테고리의 다른 글
  • 단일 파일 업로드
  • session Login
  • 파일 다운로드/ 선택
  • 화폐단위 표현
Binsoo
Binsoo
내 트러블 슈팅
  • Binsoo
    정수빈 기술블로그임.
    Binsoo
  • 전체
    오늘
    어제
    • 빈수 개발자 개발 일기 (930)
      • 개발중 (632)
        • Spring Boot (95)
        • Spring Security (2)
        • Spring Batch (6)
        • Spring Boot & Redis (13)
        • Java Persistence API (JPA) (28)
        • Web (42)
        • Rest Api (7)
        • Spring Concurrency Control (3)
        • Redis (8)
        • Kubernetes (k8s) (4)
        • MYSQL (35)
        • AirFlow (15)
        • Docker (2)
        • Git (22)
        • Linux (9)
        • JSON Web Tokens (JWT) (4)
        • Troubleshooting (87)
        • Swagger (0)
        • Vue.js (52)
        • Java (74)
        • html (12)
        • C (5)
        • jQuery (15)
        • JavaServer Pages (JSP) (17)
        • Arduino (1)
        • JavaScript (35)
        • Amazon Web Services (AWS) (11)
        • Algorithm (9)
        • 참고 기능 (16)
        • mongo (2)
      • PROJECT (27)
        • 스프링부트+JPA+몽고 API 개발 (3)
        • MINI (2)
        • 게시판 (3)
        • vue 프로젝트 (1)
        • JPA 사이드 프로젝트 기록 (17)
      • TEAM STUDY (156)
        • 가상 면접 사례로 배우는 대규모 시스템 설계 기초 (8)
        • 한 권으로 읽는 컴퓨터 구조와 프로그래밍 (12)
        • NAVER DEVELOPER (4)
        • LINUX (23)
        • PYTHON (19)
        • SERVER (8)
        • 알고리즘 코딩 테스트 스터디 (31)
        • 쿠버네티스 (40)
        • 대세는 쿠버네티스 [초급~중급] (11)
      • BOOK (0)
      • 자격증 (61)
        • 리눅스 1급 - 필기 기록 (19)
        • 네트워크 관리사 (2)
        • 네트워크 관리사 2급 - 실기 기록 (21)
        • 네트워크 관리사 2급 - 필기 기록 (16)
        • 정보처리 (2)
      • 직장인 대학원 (17)
        • 기록 (1)
        • 캐글 스터디 (3)
        • R (12)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    springboot
    리눅스 마스터 1급 정리
    네트워크 관리사 실기
    쿠버네티스 스터디
    네트워크 관리사 요약
    java
    Git 저장소
    Spring
    파이썬 알고리즘
    리눅스 마스터
    스프링
    네트워크 관리사 2급 실기
    알고리즘
    git
    네트워크 관리사
    docker
    리눅스 1급 요약
    네트워크 관리사 학점
    redis
    네트워크 관리사 자격증
    VUE
    리눅스 마스터 요약
    쿠버네티스
    네트워크 관리사 2급
    리눅스 마스터 1급 요약
    파이썬
    jpa
    BackendDevelopment
    REST API
    리눅스 마스터 1급
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Binsoo
여러장 파일 업로드

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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