간단한 파일 업로드 형식
fileuploadform.jsp 페이지
전반적인 첫번째로 보여지는 화면의 틀을 form 태그로 구상하고 파일을 전달하는 페이지이다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>File Upload Form</title>
<style>
#uploadFormArea{
margin : auto;
width : 350px;
border : 1px solid black;
}
.td_title{
font-size : xx-Large;
text-align : center;
}
</style>
</head>
<body>
<section id = "uploadFormArea">
<form action="fileUpload.jsp" method="post" enctype="multipart/form-data">
<table>
<tr>
<td colspan="2" class="td_title"> 파일 업로드 폼 </td>
<tr>
<td><label for="name">올린 사람 : </label></td><td><input type="text" name="name" id="name"></td>
</tr>
<tr>
<td><label for="subject">제목 : </label></td><td><input type="text" name="subject" id="subject"></td>
</tr>
<tr>
<td><label for="fileName1">파일명1 : </label></td><td><input type="file" name="fileName1" id="fileName1"></td>
</tr>
<tr>
<td><label for="fileName2">파일명22 : </label></td><td><input type="file" name="fileName2" id="fileName2"></td>
</tr>
<tr>
<td colspan=2 align=center><input type="submit" value="전송"></td>
</tr>
</table>
</form>
</section>
</body>
</html>
fileUpload.jsp 페이지
파일을 담을 Path 를 정해주고 MultipartRequset클래스를 이용해서 파일을 전달하는 페이지이다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import="java.util.*" %>
<%
String uploadPath=request.getRealPath("/upload");
int size = 10*1024*1024;
String name="";
String subject="";
String filename1="";
String filename2="";
String origfilename1="";
String origfilename2="";
try{
MultipartRequest multi= new MultipartRequest(request,
uploadPath,
size,
"utf-8",
new DefaultFileRenamePolicy()); /* 사진이 중복되지 않도록 숫자를 파일뒤에 붙여지게해주는 코드 */
/* 1번째 인자로는 무조건 request 객체를 받는다.
2번째 인자는 세이브 디렉토리의 경로.
3번쨰 인자는 제한 용량 설정 (int 형 1024*1024*10 => 10mb)
4번째 인자는 문자 인코딩 방식
5번째 인자는 리네임 정책 */
name=multi.getParameter("name");
subject=multi.getParameter("subject");
Enumeration files=multi.getFileNames();
String file1 = (String)files.nextElement();
filename1=multi.getFilesystemName(file1);
origfilename1=multi.getOriginalFileName(file1);
String file2 = (String)files.nextElement();
filename2=multi.getFilesystemName(file2);
origfilename2=multi.getOriginalFileName(file2);
}catch(Exception e){
e.printStackTrace();
}
%>
<html>
<body>
<form name="filecheck" action="fileCheck.jsp" method="post">
<input type="hidden" name="name" value="<%=name %>">
<input type="hidden" name="subject" value="<%=subject %>">
<input type="hidden" name="filename1" value="<%=filename1 %>">
<input type="hidden" name="filename2" value="<%=filename2 %>">
<input type="hidden" name="origfilename1" value="<%=origfilename1 %>">
<input type="hidden" name="origfilename2" value="<%=origfilename2 %>">
<!-- type 을 hidden 으로 준것은 파일을 숨겨서 가져가겠다는 의미이다. -->
</form>
<a href="#" onclick="javascript:filecheck.submit()"> 업로드 확인 및 다운로드 페이지 이동</a>
</body>
</html>
fileCheck.jsp 페이지
파일이 업로드되는지 확인하고 다운로드 받기위한 페이지
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String subject=request.getParameter("name");
String filename1=request.getParameter("filename1");
String filename2=request.getParameter("filename2");
String origfilename1=request.getParameter("origfilename1");
String origfilename2=request.getParameter("origfilename2");
%>
<html>
<head>
<meta charset="UTF-8">
<title>파일 업로드 확인 및 다운로드</title>
</head>
<body>
올린 사람 : <%= name %><br>
제목 : <%= subject %><br>
파일명 1 : <a href="file_down.jsp?file_name=<%=filename1 %>"><%=origfilename1 %></a><br>
파일명 2 : <a href="file_down.jsp?file_name=<%=filename2 %>"><%=origfilename2 %></a><br>
</body>
</html>
file_down.jsp 페이지
파일을 다운로드 받기위한 페이지
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.net.URLEncoder" %>
<%@ page import="java.io.File" %>
<%@ page import="java.io.*" %>
<%
String fileName = request.getParameter("file_name");
String savePath = "upload";
ServletContext context = getServletContext();
String sDownloadPath = context.getRealPath(savePath);
String sFilePath = sDownloadPath + "\\" + fileName;
byte b[] = new byte[4096];
FileInputStream in = new FileInputStream(sFilePath);
String sMimeType = getServletContext().getMimeType(sFilePath);
System.out.println("sMimeType>>>" + sMimeType);
if (sMimeType == null)
sMimeType = "application/octet-stream";
response.setContentType(sMimeType);
String agent = request.getHeader("User-Agent");
boolean ieBrowser = (agent.indexOf("MSIE") > -1) || (agent.indexOf("Trident") > -1);
if (ieBrowser) {
fileName = URLEncoder.encode(fileName, "UTF-8").replaceAll("\\+", "%20");
}else {
fileName = new String(fileName.getBytes("UTF-8"), "iso-8859-1");
}
response.setHeader("Content-Disposition", "attachment; filename= " + fileName);
ServletOutputStream out2 = response.getOutputStream();
int numRead;
while ((numRead = in.read(b, 0, b.length)) != -1){
out2.write(b, 0, numRead);
}
in.close();
out2.flush();
out2.close();
%>

처음 화면에서 사람 , 제목 , 파일들을 전송하면 아래처럼 업로든된 파일명과 사람, 제목을 확인할 수 있다.

위화면에서 다운받기를 원하는 파일을 클릭하면 사진을 컴퓨터로 다운받을수 있게 된다.


이처럼 파일을 보낼수 있고 파일은 다운받을수 있는 간단한 페이지가 완성되었다.
'국비 과정 > JSP' 카테고리의 다른 글
| 국비 - 1027 ( 로그인 폼) (0) | 2022.10.27 |
|---|---|
| 국비 - 1017 ( 게시판 폼 만들기 ) (0) | 2022.10.17 |
| 국비 - ( JSP MVC 패턴 ) (4) | 2022.10.12 |
| 국비 - 1011 ( javabeans , template ) (2) | 2022.10.11 |
| 국비 - 1006 ( response , page context , 액션태그) (0) | 2022.10.06 |