2009-11-19 4 views
0

(웹 양식에서) Java 서블릿에서 사용할 파일 이름이나 파일 자체를 검색하지 않습니다.Java 서블릿에서 파일 양식 필드 사용

나는 파일 양식 필드가 : 다음 wanto 내 서블릿에서 처리

<form enctype="multipart/form-data" method="post" action="SaveDictionary.do"> 
    <label> 
     <input type="file" name="dictionary_file" id="dictionary_file" /> 
     <br /> 
    </label> 
    <label> 
     <br />  
     <input type="submit" name="saveDic" id="saveDic" value="Save Dictionary" /> 
    </label> 
</form> 

, 내가 이것을 처리하기 위해 할 무엇을 - 일반 텍스트 필드에 내가

같은 것을 사용합니다

String myValue = (String) request.getParameter ("parameter_name");

이 클래스가 있다고 가정하면 파일 경로 또는 실제 파일 내용을 얻기 위해 doPost() 메서드에 무엇을 넣어야합니까?

@SuppressWarnings("serial") 
public class SaveDictionary extends HttpServlet { 

    public void doPost(HttpServletRequest request, 
    HttpServletResponse response) throws IOException, ServletException { 

    // I can't work out what goes here, the same 
    // String myValue = (String) request.getParameter("parameter_name"); doesn't work 

     response.sendRedirect("dictionary.jsp"); 
    } 

} 

답변

1

Multipart/form-data 인코딩 된 요청은 기본 서블릿 API에서 지원되지 않습니다. 기본적으로 HttpServletRequest#getInputStream()을 기반으로 요청 본문을 직접 구문 분석해야합니다. 그러나 그것은 소중하고 지루한 작업입니다. 이미 여기에서이 질문을하고 있다면 당신은 그렇게하고 싶지 않습니다. 다행히도 이미 강력하고 철저하게 개발되고 유지 관리 된 API 인 Apache Commons FileUpload API이 있습니다. 실제로 사용하기 쉽습니다. 예를 들어 User Guide에서 찾을 수 있으며 FAQ에 & 개의 요령이 있습니다.

또한 모든 구문 분석 작업을 수행하고 모든 매개 변수를 요청에 다시 넣을 수 있으므로 서블릿 코드에서 모두 투명 해지고 사용자는 HttpServletRequest#getParameter()을 계속 사용하고 일반적인 방법을 사용합니다. 그러면 업로드 된 파일을 요청 속성으로 얻을 수 있습니다. Here의 기본 예입니다.

희망이 도움이됩니다.