파일업로드폼을 만들기 위한 준비


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로 저장



http://www.oracle.com/technetwork/java/javasebusiness/downloads/java-archive-downloads-java-client-419417.html < 접속


다운로드 및 설치


위의 두 파일을 복사


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


<해당 경로에 이미지가 들어가 있는걸 확인합니다.>

+ Recent posts