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 |