๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
SpringMVCStudy/FileSystemApp

โ— FileSystemApp 06 ~ 08

by ๋‹‰๋„ค์ž„์—†๋Š” ๋‹‰๋„ค์ž„ 2024. 1. 30.
TOP

๋ชฉ์ฐจ

    [ FileSystemApp06 ]

    Test.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    <div>
    	<h1>ํŒŒ์ผ ์—…๋กœ๋“œ - ๋‹จ์ผ ํŒŒ์ผ ์—…๋กœ๋“œ</h1>
    	<hr>
    </div>
    
    <div>
    	<form action="Test_ok.jsp" method="post" enctype="multipart/form-data">
    		์ž‘์„ฑ์ž : <input type="text" name="userName" >
    		<br>
    		์ œ๋ชฉ : <input type="text" name="subject" >
    		<br>		
    		ํŒŒ์ผ : <input type="file" name="uploadFile" >
    		<br>
    		
    		<button type="submit" class="btn">ํŒŒ์ผ ์˜ฌ๋ฆฌ๊ธฐ</button>
    		
    	</form>
    </div>
    
    </body>
    </html>

    Test_ok.jsp

    <%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
    <%@page import="com.oreilly.servlet.MultipartRequest"%>
    <%@page import="java.io.File"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	// Test_ok.jsp
    	
    	 //String root = request.getRealPath("/");	//-- ์˜ˆ์ „ ๋ฐฉ์‹
    	 String root = pageContext.getServletContext().getRealPath("/");
    	 //String savePath = root + "\\" + "pds" + "\\" + "saveFile";
    	 String savePath = root + "pds" + "\\" + "saveFile";
    	 
    	 File dir = new File(savePath);
    	 
    	// ํ…Œ์ŠคํŠธ
    	//System.out.println(savePath);
    	//--==>> 
    	// C:\SpringMVCStudy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\FileSystemApp06\pds\saveFile
    	
    	if (!dir.exists())
    		dir.mkdirs();
    	
    	String encType = "UTF-8";		//-- ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹
    	int maxFileSize = 5*1024*1024;	//-- ์ตœ๋Œ€ ์—…๋กœ๋“œ ํฌ๊ธฐ(5MB)
    	
    	try
    	{
    		MultipartRequest multi = null;
    		multi = new MultipartRequest(request, savePath, maxFileSize, encType, new DefaultFileRenamePolicy());
    		
    		out.println("์ž‘์„ฑ์ž : " + multi.getParameter("userName") + "<br>");
    		out.println("์ œ๋ชฉ : " + multi.getParameter("subject") + "<br>");
    		out.println("์„œ๋ฒ„์— ์ €์žฅ๋œ ํŒŒ์ผ๋ช…: " + multi.getFilesystemName("uploadFile") + "<br>");
    		out.println("์—…๋กœ๋“œํ•œ ํŒŒ์ผ๋ช…: " + multi.getOriginalFileName("uploadFile") + "<br>");
    		out.println("ํŒŒ์ผ ํƒ€์ž…: " + multi.getContentType("uploadFile")+ "<br>");
    		
    		File file = multi.getFile("uploadFile");
    		
    		if (file != null)
    		{
    			out.println("ํŒŒ์ผ ํฌ๊ธฐ " + file.length() + "<br>");
    		}		
    		
    	}
    	catch(Exception e)
    	{
    		System.out.print(e.toString());
    	}
    	 
       //  ์•„๋ž˜ ๋ณด์—ฌ์ฃผ๋Š” ํ…œํ”Œ๋ฆฟ ๋ชจ๋‘ ์ œ๊ฑฐ
    %>

    [ FileSystemApp07 ]

    Write.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Write.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    <div>
    	<h1>ํŒŒ์ผ ์—…๋กœ๋“œ - ๋‹จ์ผํŒŒ์ผ์—…๋กœ๋“œ ๋ฐ ๋‹ค์šด๋กœ๋“œ</h1>
    	<hr>
    </div>
    
    <div>
    	<form action="Write_ok.jsp" method="post" enctype="multipart/form-data">
    	
    	์ž‘์„ฑ์ž : <input type="text" name="userName"><br>
    	์ œ๋ชฉ : <input type="text" name="subject"><br>
    	ํŒŒ์ผ : <input type="file" name="uploadFile"><br>
    	<br>
    	
    	<button type="submit" class="btn">ํŒŒ์ผ์˜ฌ๋ฆฌ๊ธฐ</button>
    	
    	
    	</form>
    </div>
    
    </body>
    </html>

    Write_ok.jsp

    <%@page import="org.apache.tomcat.util.http.fileupload.UploadContext"%>
    <%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
    <%@page import="com.oreilly.servlet.MultipartRequest"%>
    <%@page import="java.io.File"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	// Write_ok.jsp
    	
    	// โ‘  ์ฃผ์š” ์†์„ฑ๊ฐ’๋“ค ์ค€๋น„
    	// โ‘ -1. ๊ฒฝ๋กœ
    	String root = "/";
    	root = pageContext.getServletContext().getRealPath(root);
    	
    	String savePath = root + "pds" + File.separator + "saveFile";
    	//									"\\"
    	
    	// โ‘ -2. ์ธ์ฝ”๋”ฉ ๋ฐฉ์‹
    	String encType = "UTF-8";
    	// โ‘ -3. ์ตœ๋Œ€ํŒŒ์ผ์šฉ๋Ÿ‰
    	int maxFileSize = 5 * 1024 * 1024;
    	
    	// โ‘ก ์œ„์—์„œ ์„ค์ •ํ•œ ๊ฒฝ๋กœ ์ƒ ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด... ์ƒ์„ฑํ•œ๋‹ค.
    	File dir = new File(savePath);
    	if(!dir.exists())
    			dir.mkdirs();
    	
    	// โ‘ข MultipartRequest ๊ฐ์ฒด ๊ตฌ์„ฑ
    	MultipartRequest req = null;
    	String urlFile = "";
    	
    	try
    	{
    		// โ€ป ์ธ์ž๋ฆฌ์ŠคํŠธ
    		//    - request์š”์ฒญ๊ฐ์ฒด, ํŒŒ์ผ์ €์žฅ๊ฒฝ๋กœ, ํŒŒ์ผ์ตœ๋Œ€ํฌ๊ธฐ, ์ธ์ฝ”๋”ฉ๋ฐฉ์‹, ์ค‘๋ณตํŒŒ์ผ๋ช…์ฒ˜๋ฆฌ์ •์ฑ…
    		req = new MultipartRequest(request, savePath, maxFileSize, encType, new DefaultFileRenamePolicy());
    		
    		// โ‘ฃ ๊ตฌ์„ฑ๋œ multipartRequest ๊ฐ์ฒด๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ๊ฐ’ ์–ป์–ด๋‚ด๊ธฐ
    		out.println("์ž‘์„ฑ์ž : " + req.getParameter("userName") + "<br>");
    		out.println("์ œ๋ชฉ : " + req.getParameter("subject") + "<br>");
    
    		//    - getFilesystemName()
    		out.println("์„œ๋ฒ„์— ์ €์žฅ๋œ ํŒŒ์ผ๋ช…: " + req.getFilesystemName("uploadFile") + "<br>");
    		//	  - getOriginalFileName()
    		out.println("์—…๋กœ๋“œํ•œ ํŒŒ์ผ๋ช…: " + req.getOriginalFileName("uploadFile")+ "<br>");
    		//    - getContentType
    		out.println("ํŒŒ์ผ ํƒ€์ž…: " + req.getContentType("uploadFile")+ "<br>");
    		
    		//    - getFile()
    		File f = req.getFile("uploadFile");
    		if (f != null)
    		{
    			// - length()
    			out.println("ํŒŒ์ผ ํฌ๊ธฐ : " + f.length() + "Bytes.<br>");
    		}
    		
    		// โ‘ค ๋‹ค์šด๋กœ๋“œ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์†์„ฑ์„ get ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ
    		urlFile = "Download.jsp?saveFileName=" + req.getFilesystemName("uploadFile");
    		//-- ์†์„ฑ ๊ตฌ์„ฑ 1 → ์„œ๋ฒ„์— ์ €์žฅ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„
    		urlFile += "&originalFileName=" + req.getOriginalFileName("uploadFile");
    		//-- ์†์„ฑ ๊ตฌ์„ฑ 2 → ์‹ค์ œ ์—…๋กœ๋“œํ•œ ํŒŒ์ผ์˜ ์ด๋ฆ„
    	
    	}
    	catch(Exception e)
    	{
    		System.out.println(e.toString());
    	}
    	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Write_ok.jsp </title>
    <link rel="stylesheet" type="text/css" href="<%=cp %>/css/main.css">
    </head>
    <body>
    
    	<div>
    		<a href="<%=urlFile%>">ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ</a>
    	</div>
    
    
    </body>
    </html>

    Download.jsp

    <%@page import="com.test.util.FileManager"%>
    <%@page import="java.io.File"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	// Download.jsp
    	
    	String root = "/";
    	root = pageContext.getServletContext().getRealPath(root);
    	
    	String savePath = root + "pds" + File.separator + "saveFile";
    	
    	String saveFileName = request.getParameter("saveFileName");
    	String originalFileName = request.getParameter("originalFileName");
    	
    	// check~!!
    	// ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ
    	out.clear();	//-- ๊ธฐ์กด ์ถœ๋ ฅ ์ŠคํŠธ๋ฆผ ํด๋ฆฌ์–ด~
    	boolean falg = FileManager.doFileDownload(saveFileName, originalFileName, savePath, response);
    	
    
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Insert title here</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    </body>
    </html>

    FileManager.java

    /*=====================
     	FileManager.java
    ======================*/
    
    package com.test.util;
    
    import java.io.BufferedInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.OutputStream;
    import java.io.UnsupportedEncodingException;
    
    import javax.servlet.http.HttpServletResponse;
    
    public class FileManager
    {
    	// ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ
    	//-- ๋‹ค์šด๋กœ๋“œํ•  ํŒŒ์ผ์ด ์ •์ƒ์ ์œผ๋กœ ์กด์žฌํ•  ๊ฒฝ์šฐ true ๋ฐ˜ํ™˜
    	//   ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์•„ ์ •์ƒ์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ false ๋ฐ˜ํ™˜
    	// - saveFileName	  : ์„œ๋ฒ„์— ์ €์žฅ๋œ ํŒŒ์ผ์˜ ์ด๋ฆ„
    	// - originalFileName : ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—…๋กœ๋“œํ•œ ํŒŒ์ผ์˜ ์ด๋ฆ„
    	// - path			  : ์„œ๋ฒ„์— ์ €์žฅ๋œ ๊ฒฝ๋กœ
    	// - response		  : HttpServletResponse ์‘๋‹ต๊ฐ์ฒด
    	public static boolean doFileDownload(String saveFileName, String originalFileName, String path, HttpServletResponse response)
    	{
    		// ์›Œํฌ์ŠคํŽ˜์ด์Šค ~ ๋ฌผ๋ฆฌ์ ์ธ ์‹ค์ œ ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ์„œ๋ฒ„ ๊ฒฝ๋กœ → ์ „์ฒด ๊ฒฝ๋กœ
    		String loadDir = path + File.separator + saveFileName;
    		
    		// ํ™•์ธ
    		System.out.println(loadDir);
    		
    		try
    		{
    			if (originalFileName == null || originalFileName.equals(""))
    			{
    				originalFileName = saveFileName;
    			}
    			
    			// new String(originalFileName.getBytes("EUC-KR"), "ISO-8859-1");
    			originalFileName= new String(originalFileName.getBytes("EUC-KR"), "8859_1");
    			
    		//} catch (Exception e)
    		} catch (UnsupportedEncodingException e)
    		{
    			System.out.println(e.toString());
    		}
    		
    		try
    		{
    			File file = new File(loadDir);
    			
    			if (file.exists())
    			{
    				byte[] readByte = new byte[4*1024];		//-- 4096 byte == 4 kb
    				
    				response.setContentType("application/octet-stream");
    				response.setHeader("Content-disposition", "attachment;filename=" + originalFileName);
    				
    				// ์„œ๋ฒ„์˜ ๋ฌผ๋ฆฌ์ ์ธ ํŒŒ์ผ์˜ ์ „์ฒด ๊ฒฝ๋กœ๋กœ  FileInputStream  ๊ฐ์ฒด ์ƒ์„ฑ
    				// ์ด ๊ฐ์ฒด๋ฅผ BufferedInputStream ๊ฐ์ฒด๋กœ ๊ฐ์‹ธ๋Š” ์ฒ˜๋ฆฌ
    				BufferedInputStream fis = new BufferedInputStream(new FileInputStream(file));
    				
    				OutputStream os = response.getOutputStream();
    				
    				int read;
    				
    				while ( (read=fis.read(readByte, 0, 4096)) != -1  )
    				{
    					os.write(readByte, 0, read);
    				}
    				
    				// ๋ฒ„ํผ์˜ ๋‚ด์šฉ์„ ๋ฐ€์–ด๋‚ด๊ธฐ
    				os.flush();
    				
    				// ๋ฆฌ์†Œ์Šค ๋ฐ˜๋‚ฉํ•˜๊ธฐ
    				os.close();
    				fis.close();
    				
    				// ํŒŒ์ผ์ด ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ์ด๋ฏ€๋กœ true ๋ฐ˜ํ™˜
    				return true;
    			}
    			
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    		
    		// ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์•„ ์ •์ƒ์ ์ธ ์ฒ˜๋ฆฌ๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š๋Š” ์ƒํ™ฉ์ด๋ฏ€๋กœ false๋ฐ˜ํ™˜
    		return false;
    		
    	}// end doFileDownload()
    	
    	// ์‹ค์ œ ์„œ๋ฒ„์˜ ํŒŒ์ผ ์‚ญ์ œ(์ œ๊ฑฐ)
    	public static void doFileDelete(String fileName, String path)
    	{
    		try
    		{
    			File file = null;
    			
    			String fullFileName = path + File.separator + fileName;
    			file = new File(fullFileName);
    			
    			if (file.exists())
    			{
    				file.delete();
    			}
    			
    		} catch (Exception e)
    		{
    			System.out.println(e.toString());
    		}
    		
    	}
    }

    [ FileSystemApp08 ]

    Test.jsp

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Test.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    
    <div>
    	<h1>ํŒŒ์ผ์—…๋กœ๋“œ - ๋‹ค์ค‘ ํŒŒ์ผ ์—…๋กœ๋“œ</h1>
    	<hr>
    </div>
    
    <div>
    	<form action="Test_ok.jsp" method="post" enctype="multipart/form-data">
    	
    		์ž‘์„ฑ์ž : <input type="text" name="userName"><br>
    		์ œ๋ชฉ: <input type="text" name="subject"><br>
    		ํŒŒ์ผ๋ช… : <input type="file" name="uploadFile1"><br>
    		ํŒŒ์ผ๋ช… : <input type="file" name="uploadFile2"><br>
    		<br>
    		
    		<input type="submit" value="ํŒŒ์ผ์—…๋กœ๋“œ">
    	</form>
    </div>
    
    </body>
    </html>

    Test_ok.jsp

    <%@page import="java.util.Enumeration"%>
    <%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>
    <%@page import="com.oreilly.servlet.MultipartRequest"%>
    <%@page import="java.io.File"%>
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
    <%
    	request.setCharacterEncoding("UTF-8");
    	String cp = request.getContextPath();
    %>
    <%
    	// Test_ok.jsp
    	
    	String root = "/";
    	root = pageContext.getServletContext().getRealPath(root);
    	
    	String savePath = root + "pds" + File.separator + "saveFile";
    	
    	// ํ™•์ธ
    	System.out.println(savePath);
    	
    	File dir = new File(savePath);
    	if (!dir.exists())
    		dir.mkdirs();
    	
    	String encType = "UTF-8";
    	int maxFileSize = 5*1024*1024;
    	
    	MultipartRequest req = null;
    	
    	try
    	{
    		req = new MultipartRequest(request, savePath, maxFileSize, encType, new DefaultFileRenamePolicy());
    		
    		out.println("์ž‘์„ฑ์ž : " + req.getParameter("userName") + "<br>");
    		out.println("์ œ๋ชฉ : " + req.getParameter("subject") + "<br>");
    		out.println("*****************************************************<br>");
    		
    		out.println("์—…๋กœ๋“œ๋œ ํŒŒ์ผ<br>");
    		
    		// check~!!!
    		// โ€ป ๋‹ค์ค‘ ํŒŒ์ผ ์—…๋กœ๋“œ ๊ตฌ์กฐ์—์„œ ์ฒดํฌํ•ด์•ผ ํ•  ์‚ฌํ•ญ
    		//    ใ€ŽMultipartRequestใ€ ๊ฐ์ฒด์˜ ใ€ŽgetFileNames()ใ€
    		//    → ์š”์ฒญ์œผ๋กœ ๋„˜์–ด์˜จ ํŒŒ์ผ๋“ค์˜ ์ด๋ฆ„์„ Enumeration ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
    		Enumeration files = req.getFileNames();
    		
    		// hasMoreElements() / nextElement()
    		while (files.hasMoreElements())
    		{
    			String name = (String)files.nextElement();
    			
    			if (req.getFilesystemName(name) != null)
    			{
    				out.println("์„œ๋ฒ„์— ์ €์žฅ๋œ ํŒŒ์ผ๋ช… : " + req.getFilesystemName(name) + "<br>");
    				out.println("์—…๋กœ๋“œํ•œ ์‹ค์ œ ํŒŒ์ผ๋ช… : " + req.getOriginalFileName(name) + "<br>");
    				out.println("ํŒŒ์ผ ํƒ€์ž…(์œ ํ˜•) : " + req.getContentType(name) + "<br>");
    				
    				File f = req.getFile(name);
    				if (f != null)
    				{
    					out.println("ํŒŒ์ผ ํฌ๊ธฐ(Bytes) : " + f.length() + "<br>");
    				}
    			}
    			
    		}
    		
    	}
    	catch(Exception e)
    	{
    		System.out.println(e.toString());
    	}
    	
    	
    %>

     

    'SpringMVCStudy > FileSystemApp' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

    โ— FileSystemApp 01 ~ 05  (0) 2024.01.29