<form> 태그는  반드시 POST 방식으로 해야 한다. 

또한 enctype은 "multipart/form-data"로 고정이다. 이 형태에서 벗어나지 않는다.

<form method="POST" enctype="multipart/form-data" action="처리 서블릿">
  <input type="file" name="이름"/>
  <input type="submit" value="업로드"/>
</form>


파일 업로드를 위한 컴포넌트는 몇 가지 있는데, 여기서는 Apache의 Commons 프로젝트의 fileupload를 사용하겠다.


다음 경로로 접속한다.

http://jakarta.apache.org/


Ex-Jakarta의 Commons 프로젝트를 클릭한다.


FileUpload를 클릭하여 최신 버전을 다운로드 한다.


개발 환경의 OS에 따라 맞는 것을 다운로드 한다.

commons-fileupload-1.3-bin.zip

commons-fileupload-1.3.1-bin.zip


압축 풀면 나오는 폴더 내에 commons-fileupload-1.3.1.jar 파일을 프로젝트의 WebContent\WEB-INF\lib 에 복사해준다.

※ 웹 프로젝트의 라이브러리는 프로젝트\WebContent\WEB-INF\lib 에 위치하면 된다.


해당 파일을 Build Path에 추가하자.


Java Build Path에 등록하면 라이브러리에 추가된다.


아파치 Commons 프로젝트의 파일 업로드 라이브러리는 일반적으로 자체적으로 해결하므로 IO 관련 컴포넌트도 같이 등록해주는 것이 좋다. (안넣으니 없다고 오류나더라~)


Commons의 IO를 다운로드한다.


commons-io-2.4-bin.zip


필요한 파일은 commons-io-24.jar 이다. 

FileUpload 컴포넌트와 동일한 작업(lib복사, 빌드패스 추가)을 해준다.


이로써 사용준비는 끝났고 예제로 테스트 해본다.


예제) 파일을 선택하여 지정한 디렉토리로 업로드 해본다.

FileUploadPage.htm


web.xml


FileUploadServlet.java


파일을 선택하여 업로드 후 지정한 디렉터리에 저장되었는지 확인해보자.


저장된 경로를 콘솔에서 확인하고 찾아 가보자. 



※ 이클립스에서 실행하면 저장되는 경로가 복잡하고 길다. 

그러나 실제 톰캣을 사용해 배포하면 %톰캣홈%\webapps\프로젝트\ 아래에 저장될 것이다. 


※ 이클립스의 웹브라우저를 통해 접근했을 때, 업로드 후 다음과 같은 오류가 발생하는 경우가 있다. (반드시 그런 것은 아니다) 


그냥 다른 웹브라우저로 접근하면 잘된다. (ㅡ,.ㅡ)



Posted by 후니아부지
: