Web/JSP
[JSP] Cos.jar를 이용한 MultipartRequest 사용법 (웹 파일입출력)
jinsiri
2019. 7. 18. 18:06
Cos.jar를 이용한 MultipartRequest 사용법
파일 입출력을 위한 유용하고 간단한 방법
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>
클래스 등록, 인코딩 초기값
반응형