2020.12.03 고급자바 전체 업로드한 파일 가져오기 fileUpload servlet

 1. jsp 파일에 처음 메인 페이지를 만들어서 연결 될 수 있도록 한다. 


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

pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>File Upload용 폼 페이지</title>

</head>

<body>

<h1>File Upload 연습</h1>

<h3>파일 선택 창에서 Ctrl 키나 Shift키를 누른 상태에서 클릭하면 여러개의 파일을 한꺼번에 선택할 수 있다.

</h3>

<!-- 파일업로드는 post 방식으로만 사용  -->

<form action="<%=request.getContextPath()%>/fileUploadServlet.do"


enctype="multipart/form-data" method="post">

                //파일뿐만 아니라 text 타입으로 사용자가 적어준 것도 보낸다.

ID : <input type="text" name="memId"><br>

<br>

<!-- multiple 은 파일을 선택할때 여러개를 선택할 수 있다.  -->


Upload File1 : <input type="file" name="file1" multiple><br><br>

Upload File2 : <input type="file" name="file2"> <br><br>

<input type="submit" value="파일업로드">

</form>



<hr>

<a href="<%=request.getContextPath() %>/uploadedFilesServlet.do">전체업로드된 목록 가져오기</a>


</body>

</html>


-----------------------------------------------------------------------------------------------------

2. java 파일 전체 업로드된 목록 가져오는 서블릿


package kr.or.ddit.upload;


import java.io.File;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;


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("/uploadedFilesServlet.do")

public class UploadedFilesServlet extends HttpServlet {

private static final long serialVersionUID = 1L;

    

        //폴더 경로 선언

    private final String UPLOAD_DIR = "D:/D_Other/uploadFiles"; 



protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


                //파일 객체 생성

File file = new File(UPLOAD_DIR); 

if(!file.exists()) {

file.mkdir();

}

//파일이 저장된 폴더의 모든 파일 목록을 구해와서 List 에 추가한다. 

File[] allFiles = file.listFiles(); //전체 파일목록 가져오기 

List<FileDetailVO> fileList = new ArrayList<>(); 

for(File f : allFiles) {

FileDetailVO fvo = new FileDetailVO() ; 

fvo.setFileName(f.getName());

fvo.setFileSize((long)Math.ceil(f.length() / 1024.0));

fvo.setUploadStatus("Successed");

fileList.add(fvo); 

}

request.setAttribute("uploadFiles", fileList);

RequestDispatcher rd = request.getRequestDispatcher("/05/allUploadFiles.jsp"); 

rd.forward(request, response);

}


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}


}



------------------------------------------------------------------------------------------------------


<





-------------------


<%@page import="kr.or.ddit.upload.FileDetailVO"%>

<%@page import="java.util.List"%>

<%@ 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>

</head>

<body>

<h1<%=request.getAttribute("memId") %>> 님이 방금 업로드한 파일 목록들</h1>

<table border="1"> 

<thead>

<tr><th>파일이름</th><th>파일크기</th><th>업로드상태</th><th>비고</th></tr>


</thead>


<tbody>


<%


List<FileDetailVO> fileList = (List<FileDetailVO>)request.getAttribute("uploadFiles");

if(fileList != null ){

for(int i = 0 ; i <fileList.size(); i++ ){



%>


<tr>

<td><%=fileList.get(i).getFileName() %></td>

<td><%=fileList.get(i).getFileSize() %></td>

<td><%=fileList.get(i).getUploadStatus() %></td>

<td>

<a href="<%=request.getContextPath()%>/downloadServlet.do?fileName=<%=fileList.get(i).getFileName()%>">DownLoad</a>

</td>






<%


}

}


%>



</tbody>




</table>

</body>

</html>


댓글