728x90
반응형

<%@ 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>
<h2>commons를 이용한 파일 업로드</h2>
<p>업로드할 디렉토리가 없으면 자동으로 생성됨.</p>
<p> -commons-fileupload-버전.jar, commons-id-버전.jar파일 필요</p>
<dl>
<p>commons-fileupload-버전-bin.zip파일 다운 경로:
<a href="https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload/1.4"
target="_blank">다운받기</a></p>
<p>commons-io-버전-bin.zip파일 다운 경로:
<a herf="https://mvnrepository.com/artifact/commons-io/commons-io/2.11.0" target="_blank">다운받기</a>
</p></dl>
<form action="11_02_fileupload02_process.jsp" method="post" enctype="multipart/form-data">
<fieldset>
<legend>파일 업로드 폼</legend>
<p>이 름 : <input type="text" name="name"></p>
<p>제 목 : <input type="text" name="subject"></p>
<!-- 다중파일 업로드 속성: multiple="multiple" -->
<p>이 름 : <input type="file" name="filename" multiple="multiple"></p>
<p><input type="submit" value="파일올리기"></p>
</fieldset>
</form>
</body>
</html>​

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
// 	현재 파일 위치의 상대경로 지정가능
// 	String savePath = application.getRealPath("파일을 저장할 폴더");
// 	예시 : String savePath = application.getRealPath("\product");
	String fileUploadPath = "C:\\uploadts";
	
// 	파일업로드를 위해 객체 생성
	DiskFileUpload upload = new DiskFileUpload();
// 폼페이지에서 전송된 요청 파라미터를 가져오기
	List items = upload.parseRequest(request);
// 	요청 파라미터를 모아놓은 items배열객체를 가져오기 쉽게 iterator객체로 변환함.
	Iterator params = items.iterator();
	
	while (params.hasNext()){
		FileItem fileItem = (FileItem) params.next();
		if(fileItem.isFormField()){
			// 필드 이름
			String name= fileItem.getFieldName();
			// 필드 값, 한글 인코딩
			String value = new String((fileItem.getString()).getBytes("8859_1"),"utf-8");
			out.print(name + ": "+value+"<br>");
		} else {
			String fileName = fileItem.getName();
			out.print("orginfileName: " + fileName + "<br>"); // "/img/cute_dog.jpg"
			fileName = fileName.substring(fileName.lastIndexOf("\\")+1); //"cute_dog.jpg"
			File file = new File (fileUploadPath + "/" + fileName);
			String orginName = fileName;
			
			// 동일한 파일명이 존재하는 경우 파일명 변경하기
			// 
			if(file.exists()){
				Timestamp ts = new Timestamp(System.currentTimeMillis());
				long tsl = ts.getTime();
				fileName = tsl + fileName.substring(fileName.lastIndexOf("."));

				file = new File(fileUploadPath + "/"+fileName);
			}
			out.print("newfileName: "+ fileName + "<br>");
			
			// 파일이 실제로 업로드 되는 시점
			fileItem.write(file);
		}
	}
	%>
</body>
</html>​
s
<%@ 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>
	<form name="fileForm" action="11_03_fileupload03_process.jsp" method="post" enctype="multipart/form-data">
	<fieldset>
	<legend>파일 업로드 폼</legend>
	<p>이 름 : <input type="text" name="name"></p>
	<p>제 목 : <input type="text" name="subject"></p>
	<p>이 름 : <input type="file" name="filename"></p>
	<p><input type="submit" value="파일올리기"></p>
	</fieldset>
	</form>
</body>
</html>​
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page import="org.apache.commons.fileupload.*" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	String path= "C:\\upload";
	
	DiskFileUpload upload = new DiskFileUpload();
	// 파일 최대크기  용량제한. 최대로 업로드할 수 있는 파일의 크기를 바이트 단위로 지정
	upload.setSizeMax(2*1024*1024); //2MB정도 = 1*1024*1024
	// request는 파일을 합쳐서 가져오기에 용량설정해줘야함
	List items = upload.parseRequest(request);
	Iterator params = items.iterator();
	
	while(params.hasNext()){
		FileItem item = (FileItem) params.next();

		if(item.isFormField()){
			String name = item.getFieldName();
			String value = item.getString("utf-8");
			out.println(name + "=" + value + "<br>");
		} else {
			String fileFieldName = item.getFieldName();
			String fileName = item.getName();
			String contentType = item.getContentType();
			
			fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
			long fileSize = item.getSize();
			
			File file = new File(path + "/" + fileName);
			item.write(file);
			
			out.println("-------------------------<br>");
			out.println("요청 파라미터 이름 : " + fileFieldName +"<br>");
			out.println("저장 파일 이름 : " + fileName +"<br>");
			out.println("파일 콘텐츠 타입 : " + contentType +"<br>");
			out.println("파일 크기 : " + fileSize);
		}
	}
	%>
</body>
</html>​

728x90
반응형

+ Recent posts