파일업로드폼을 만들기 위한 준비
http://www.servlets.com/cos/cos-26Dec2008.zip < 클릭해서 다운로드
1. 해당 파일을 다운받고 압축을 푼다.
2. 압축내역에 있는 lib폴더로 들어가서 cos.jar를 복사한다.
3. Eclipse를 실행하여 WebContent > WEB-INF > lib에 붙여넣기 한다.
4. C:\aajsp_17\jsp_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\firstjsp에 upload 폴더 생성
1. FileUpload Form Test
<%@ 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()); // 똑같은 화일을 업로드시 중복배재
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();
}
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>fileupload test</title>
</head>
<body>
<form action="fileCheck.jsp" name="filecheck" 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 %>">
</form>
<A href="#" onClick="javascript:filecheck.submit()">업로드 확인 및 다운로드 페이지 이동</A>
</body>
</html>
fileUpload.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("subject");
String filename1 = request.getParameter("filename1");
String filename2 = request.getParameter("filename2");
String origfilename1 = request.getParameter("origfilename1");
String origfilename2 = request.getParameter("origfilename2");
%>
<!DOCTYPE html>
<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><p>
</body>
</html>
fileCheck.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 sMineType = getServletContext().getMimeType(sFilePath);
System.out.println("sMineType >>> " +sMineType);
if(sMineType == null)
{
sMineType="application/octet-stream";
}
response.setContentType(sMineType);
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);
}
out2.flush();
out2.close();
in.close();
%>
file_down.jsp로 저장
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>FileUpload Form Test</title>
<STYLE>
#uploadFormArea{
margin: auto;
width: 350px;
border: 1px solid black;
background-color: gray;
}
.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>
<tr>
<td>
<lable for="name">올린 사람 : </lable>
</td>
<td>
<input type="text" name="name" id="name">
</td>
</tr>
<tr>
<td>
<lable for="subject">제목 : </lable>
</td>
<td>
<input type="text" name="subject" id="subject">
</td>
</tr>
<tr>
<td>
<lable for="fileName1">화일명1 : </lable>
</td>
<td>
<input type="file" name="fileName1" id="fileName1">
</td>
</tr>
<tr>
<td>
<lable for="fileName2">화일명2 : </lable>
</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>
<올릴 이미지를 선택하고 전송을 클릭하세요.>
<이런식으로 올린 이미지들이 나옵니다.>
<클릭하면 다운로드도 가능하구요.>
보면 주소창에 localhost로 되어 있는데 ip 주소로 적어도 접근이 가능하고
서버만 열려 있다면 다른 컴퓨터나 폰으로도 접근이 가능합니다.
안쓰는 컴퓨터 같은걸 이용해서 업로드 서버를 제작하는게 가능한거죠ㅎ
<이미지 파일들은 준비단계에서 만들었던 upload폴더에 저장 됩니다.>
2. thumnailForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>thumnailForm.jsp Test</title>
</head>
<body>
<h3>썸네일 이미지 폼 테스트</h3>
<form action="thumnail.jsp" method="post" enctype="multipart/form-data">
이미지파일:<input type="file" name="filename"><P>
<input type="submit" value="전송">
</form>
</body>
</html>
thumnailform.jsp로 저장
다운로드 및 설치
위의 두 파일을 복사
WEB-INF > lib 폴더 내에 붙여넣기를 한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.awt.Graphics2D" %>
<%@ page import="java.awt.image.renderable.ParameterBlock" %>
<%@ page import="java.awt.image.BufferedImage" %>
<%@ page import="javax.media.jai.JAI" %>
<%@ page import="javax.media.jai.RenderedOp" %>
<%@ page import="javax.imageio.ImageIO" %>
<%@ page import="com.oreilly.servlet.MultipartRequest" %>
<%@ page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy" %>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%
ServletContext context = request.getServletContext();
String imagePath = context.getRealPath("image");
int size = 10*1024*1024;
String filename="";
try{
MultipartRequest multi = new MultipartRequest(
request,
imagePath,
size,
"UTF-8",
new DefaultFileRenamePolicy()
);
Enumeration files = multi.getFileNames();
String file = (String)files.nextElement();
filename = multi.getFilesystemName(file);
}catch(Exception e)
{
e.printStackTrace();
}
ParameterBlock pb = new ParameterBlock();
pb.add(imagePath+"/"+filename);
RenderedOp rOp = JAI.create("fileload",pb);
BufferedImage bi = rOp.getAsBufferedImage();
BufferedImage thumb = new BufferedImage(100,100,BufferedImage.TYPE_INT_RGB);
Graphics2D g = thumb.createGraphics();
g.drawImage(bi, 0, 0, 100 ,100, null);
File file = new File(imagePath + "/sm_" + filename);
ImageIO.write(thumb, "jpg", file);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Thumbnail Image</title>
</head>
<body>
<h3>원본 이미지</h3><br>
<img alt="source image" src="\firstjsp/image/<%=filename%>"><p>
<hr color="red" size="5">
<h3>썸네일 이미지</h3><br>
<img alt="source image" src="\firstjsp/image/sm_<%=filename%>"><p>
</body>
</html>
thumnail.jsp로 저장
*소스 작성시 참고사항
<일치시켜준다.>
<파일을 선택하고 전송을 클릭합니다.>
<파일 전송 후 화면>
C:\aajsp_17\jsp_workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps\firstjsp\image
<해당 경로에 이미지가 들어가 있는걸 확인합니다.>
'JSP(Java Server Pages)' 카테고리의 다른 글
10. Oracle Database 연동 테스트 (0) | 2017.02.22 |
---|---|
9. <JSP> 데이터베이스 연동, Insert, Select, Update, Delete (0) | 2017.02.21 |
7. template test, bean test, 회원가입 폼 (0) | 2017.02.17 |
6. session, Java Beans (자바 빈즈) (0) | 2017.02.16 |
5. login.html, forwardlogin, Cookie & Session, 쿠키 예제, 세션 예제 (0) | 2017.02.15 |