'multipart'에 해당되는 글 4건

multipart 파일체크

JAVA 2019. 4. 9. 16:04

multipart 파일체크



if(isFileUploadRequest((HttpServletRequest)request)){

HttpServletRequest httpServletRequest = new HttpServletRequestWrapper((HttpServletRequest)request);//(HttpServletRequest)request;

String flag ="T";

DiskFileItemFactory factory = new DiskFileItemFactory();

factory.setSizeThreshold(50 * 1024);

factory.setRepository(new File("/"));

   ServletFileUpload upload = new ServletFileUpload(factory);

   ArrayList fileItems;

try {

fileItems = (ArrayList)upload.parseRequest(httpServletRequest);

 Iterator i = fileItems.iterator();

 while ( i.hasNext () ) {

     FileItem fi = (FileItem)i.next();

     if ( !fi.isFormField () ){

         if (fi.getName().indexOf(".")>-1){

if (!getExtCheck(fi.getName(), writeExt)){

flag ="F";

break;

}

 }

     }

 }

 

} catch (FileUploadException e) {

       e.printStackTrace();

   }

 

   //System.out.println(request.getAttribute("flag").toString());

 if (flag.equals("F")){

        response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<html>");

out.println("<head>");

out.println("<meta HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=UTF-8\">");

out.println("<script type=\"text/javascript\">");

out.println("alert('등록하실수 없는 확장자입니다.');");

out.println("history.back();");

out.println("</script>");

out.println("</head>");

out.println("</html>");

out.flush();

out.close();

return;

aChain.doFilter(request, response);

}else{

aChain.doFilter(request, response);

}




  public boolean getExtCheck(String value, String writeExt){

   String[] file = value.toLowerCase().split("\\."); 

   String ext = file[file.length-1];

   if (ext!=null && ext.length()>0 && writeExt.indexOf(ext)==-1){

   return false;

   }

   return true;

  }

'JAVA' 카테고리의 다른 글

[JAVA] 휴일 알아내기  (0) 2021.06.25
multipart/form-data 인지 체크, MultipartRequestWrapper 상속해서 수정  (2) 2019.04.09
multipart 파라미터 받기  (0) 2019.02.28
multipart 클래스 사용 예제  (0) 2019.02.28
multipart 케스팅  (0) 2019.02.28
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

multipart 클래스 사용 예제



<!-- http://servlets.com/cos/ 접속 -> cos-26Dec2008.zip 파일 다운로드 (파일은 바뀔 수 있음) -->


<!-- WEB-INF -> lib 폴더에 추가 -->


<!-- fileSelect.jsp -->


<?xml version="1.0" encoding="EUC-KR" ?>

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 

          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" />

<title>파일 업로드예제 폼</title>

</head>

<body>

<h2>파일을 업로드예제를 시작 합니다.</h2>

<form action="upPro.jsp" name="fileUp" method="post" enctype="multipart/form-data">

<table border="1">

<tr>

<td>작성자 : </td>

     <td><input type="text" name="user" /></td>

</tr>

<tr>

<td>제     목 : </td>

     <td><input type="text" name="title" /></td>

</tr>

<tr>

<td>파     일 : </td>

     <td><input type="file" name="uploadFile" /></td>

</tr>

<tr>

<td colspan="2" align="center">

         <input type="submit" value="전송" />

     </td>

</tr>

</table>

</form>

</body>

</html>




<!-- fileupload.jsp -->


<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>

<%@ page import="com.oreilly.servlet.*, com.oreilly.servlet.multipart.*" %>

<%@ page import="java.io.*, java.util.*" %>

<%

// 먼저 파일이 저장될 서버의 실제 폴더 경로를 구합니다.. ServletContext 객체를 이용합니다.

String realFolder = "";

// webApps 상의 폴더명입니다.. 이 폴더에 해당하는 실제 경로를 찾아서  realFolder 로 매핑시킵니다.

String saveFolder = "fileSave";

String charset = "euc-kr";

int maxSize = 1024 * 1024 * 1024;


realFolder = this.getServletContext().getRealPath(saveFolder);

out.println("실제 경로는 다음과 같은 위치 입니다. : " + realFolder);


try {

// 이제부터 multipartRequest 객체를 이용해서 파일을 업로드 합니다.

MultipartRequest multi = null;

multi = new MultipartRequest(request, realFolder, maxSize, charset, new DefaultFileRenamePolicy());

// 이상으로 파일 업로드 끝입니다.


//이제부터 Form에서 전송되는 파라미터 확인 해 봅니다.

Enumeration<String> params = multi.getParameterNames();

while (params.hasMoreElements()) {

String name = params.nextElement();

String value = multi.getParameter(name);

out.println("<br />" + name + " : " + value + "<br />");

}


out.println("<hr color='red' />");

out.println("업로드 된 파일의 정보 입니다.");


Enumeration files = multi.getFileNames();


while (files.hasMoreElements()) {

String name = (String)files.nextElement();

String fileName = multi.getFilesystemName(name);

String originName = multi.getOriginalFileName(name);

String type = multi.getContentType(name);


// 전송된 파일의 실제 속성을 열여봅니다.

File file = multi.getFile(name);


out.println("파라미터의 이름 : " + name + "<br />");

out.println("실제 파일 이름 : " + originName + "<br />");

out.println("저장된 파일 이름 : " + fileName + "<br />");

out.println("파일타입 : " + type + "<br />");


if (file != null) {

out.println("크기 : " + file.length());

out.println("<br />");

}

}

} catch (Exception e) {

e.printStackTrace();

}

%>

'JAVA' 카테고리의 다른 글

multipart 파일체크  (4) 2019.04.09
multipart 파라미터 받기  (0) 2019.02.28
multipart 케스팅  (0) 2019.02.28
multipart 리졸버  (0) 2019.02.28
method 동적 호출  (0) 2019.02.27
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

multipart 케스팅

JAVA 2019. 2. 28. 17:19

multipart 케스팅


if (request.getContentType() != null && (request.getContentType()).toLowerCase().startsWith("multipart/form-data")){

final Map<String, MultipartFile> files = ((MultipartHttpServletRequest)request).getFileMap();

    zvl.put("files", files);

}


public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {                  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;     

    MultipartFile multipartFile = multipartRequest.getFile("image");     

.... 

'JAVA' 카테고리의 다른 글

multipart 파라미터 받기  (0) 2019.02.28
multipart 클래스 사용 예제  (0) 2019.02.28
multipart 리졸버  (0) 2019.02.28
method 동적 호출  (0) 2019.02.27
MD5 암호화 예제  (0) 2019.02.27
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,

multipart 리졸버

JAVA 2019. 2. 28. 17:14

multipart 리졸버


○ 파일 업로드와 같이 멀티파트 포멧의 요청정보를 처리하는 전략을 설정할 수 있다.


○ 멀티파트 처리를 담당하는 다양한 구현으로 바꿀 수 있도록 설계되어 있지만, 현재는 아파치 Commons 의 FileUpload 라이브러리를 사용하는 CommonsMultipartResolver 한 가지만 지원된다.


○ 멀티파트 리졸버 전략은 디폴트로 등록되는 것이 없다. 따라서 적용하려면 아래와 같이 빈을 등록해줘야 한다.


<bean name="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    

<property name="maxUploadSize" value="100000" /> 

</bean> 


○ DispatcherServlet 은 클라이언트로부터 멀티파트 요청을 받으면 멀티파트 리졸버에게 요청해서 HttpServletRequest 의 확장 타입인 MultipartHttpServletRequest 오브젝트로 전환한다.


○ MultipartHttpServletRequest 에는 멀티파트를 디코딩한 내용과 이를 참조하거나 조작할 수 있는 기능이 추가되어 있다.


○ 아래와 같이 HttpServletRequest 를 파라미터로 받은 건트롤러에서는 전달받은 오브젝트를 MultipartHttpServletRequest 로 캐스팅한 후에 멀티파트 정보를 가진 MultipartFile 오브젝트를 가져와 사용할 수 있다.


public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) {                  MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request;     

MultipartFile multipartFile = multipartRequest.getFile("image");    

 .... 


○ 애노테이션 방식의 유연한 컨트롤러 메소드를 이용하면 처음부터 MultipartFile 타입의 파라미터로 전달받거나 변환기를 이용해서 아예 바이트 배열이나 파일 정보를 담은 오브젝트로 가져올 수도 있다.

'JAVA' 카테고리의 다른 글

multipart 클래스 사용 예제  (0) 2019.02.28
multipart 케스팅  (0) 2019.02.28
method 동적 호출  (0) 2019.02.27
MD5 암호화 예제  (0) 2019.02.27
mac address  (0) 2019.02.15
블로그 이미지

마크제이콥스

초보 개발자의 이슈및 공부 내용 정리 블로그 입니다.

,