[JAVA] 멀티파트 폼(multipart/form-data)으로 넘긴 파라미터 request.getParameter 로 받기

[JAVA] 멀티파트 폼(multipart/form-data)으로 넘긴 파라미터 request.getParameter 로 받기

멀티파트 폼(<form enctype=”multipart/form-data”>)으로 넘긴 파라미터는 단순 request.getParameter 메서드로 받으면 null 이 나오고, multipartRequest.getParameter 메서드로 받아야 한다.

예를 들어 아래와 같은 form 으로 데이터를 전송했다면,

<form id=”test_form” target=”_blank” action=”/upload_test.jsp” method=”post” enctype=”multipart/form-data”>
    <input type=”file” multiple=”multiple” id=”file_input” name=”fileobj[]”>
    <input type=”hidden” name=”param1″ value=”value1″>
    <input type=”hidden” name=”param2″ value=”value2″>
    <input type=”hidden” name=”param3″ value=”value3″>
</form>

아래와 같이 데이터를 받아야 한다.

// 예 : upload_test.jsp 파일의 내용

// 100MB
int maxSize = 1024*1024*100;

MultipartRequest multipartRequest = new MultipartRequest(request, “C:\\test\\”, maxSize, “UTF-8”, new DefaultFileRenamePolicy());

String param1 = multipartRequest.getParameter(“param1”);
String param2 = multipartRequest.getParameter(“param2”);
String param3 = multipartRequest.getParameter(“param3”);

그런데 단순 request.getParameter 메서드로 파라미터를 받고 싶은 경우가 있다.  DefaultFileRenamePolicy 클래스를 사용하지 않고 FileRenamePolicy 인터페이스를 직접 구현(Implement)하고 싶을 때, 그 안에서 직전 페이지로부터 넘겨받은 파라미터를 사용하고 싶으면 그럴 수 있다.

이 때는 action 뒤쪽에 파라미터를 붙여서 get 으로 보내면 된다.

예를 들어 action=”/upload_test.jsp” 이 아니라, action=”/upload_test.jsp?param1=value1″ 과 같은 식으로 수정하면 된다. (cf : document.getElementById(“test_form”).action = “/upload_test.jsp?param1=value1”;)

전달받는 쪽에서는 request.getParameter(“param1”); 로 받으면 된다.