Web/JSP

[JSP] Cos.jar를 이용한 MultipartRequest 사용법 (웹 파일입출력)

jinsiri 2019. 7. 18. 18:06

Cos.jar를 이용한 MultipartRequest 사용법 

파일 입출력을 위한 유용하고 간단한 방법

cos.jar
0.05MB

1. 위 cos.jar파일을 프로젝트 lib폴더에 넣는다.  DynamicProject라면 자동 빌드 추가되고 다른 프로젝트라면 add Build Path를 해준다.

2. inputFile2.jsp를 작성해 준다. ( 업로드 할 파일 선택화면)

<body>
	<h3>입력폼,COS를 사용한 MultipartRequest 객체 사용</h3>
	<hr>
	<form action="resultFile2.jsp" method="post"
		enctype="multipart/form-data" 
		>
		이름: <input type="text" name="username"><br>
		파일:	 <input type="file" name="myfile"><br>
		<button>전송</button><br>
	</form>
</body>

3. resultFile2jsp를 만들어 준다. (업로드한 파일 다운되는 화면)

<body>
<h3>결과페이지(파일업로드)</h3>
<%
	String saveDir=application.getRealPath("/upload");
	int maxSize=5* 1024 * 1024; //업로드 될 파일의 크기제한, 단위:byte
	MultipartRequest mreq= new MultipartRequest(request,saveDir, maxSize,"utf-8",new DefaultFileRenamePolicy()); 
	//MultipartRequest호출 ==파일업로드!
	
	out.print("파일업로드 성공");
	String name=mreq.getParameter("username");
	
%>
	<br>
	이름: <%=name %><br>
	원본파일명: <%=mreq.getOriginalFileName("myfile") %>
	저장파일명: <%=mreq.getFilesystemName("myfile") %>
</body>

BufferedReader가 없이도 파일을 읽고 쓸 수 있다.

MultipartRequest호출하는 것 자체가 파일 업로드 하는 것이기 때문이다.

4. EncFilter.java 클래스 생성(기본 인코딩 설정)

package util.enc;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

public class EncFilter implements Filter{
	private String encType;
	
	@Override
	public void init(FilterConfig config) throws ServletException {
	   //System.out.println("init()");
		//config --> web.xml에 정의된 param읽기
		encType=config.getInitParameter("encType");
	}

	@Override
	public void destroy() {	
	   System.out.println("destroy()");
	}

	@Override
	public void doFilter(ServletRequest request, 
			             ServletResponse response, 
			             FilterChain chain)
			throws IOException, ServletException {
		System.out.println("doFilter()");
		// encType이 null일경우 nullPointException이 난다.
		if(encType!=null) {
			request.setCharacterEncoding(encType);
		}else {
			request.setCharacterEncoding("UTF-8");
		}
		chain.doFilter(request, response);
		// 다른 필터 혹은 요청 페이지와의 연결진행
	}


}

5. web.xml에 내용추가

	<!-- 필터 클래스 등록 -->
	<filter>
	<filter-name>enc</filter-name>
	<filter-class>util.enc.EncFilter</filter-class>
	
	<!-- 초기화시 전달할 데이터 -->
	<init-param>
		<description>encoding초기값</description>
		<param-name>encType</param-name>
		<param-value>UTF-8</param-value>
	</init-param>
	</filter>

클래스 등록, 인코딩 초기값

반응형