ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 서블릿 파일 업로드 하기
    Servlet-JSP 2021. 11. 24. 13:44

    먼저 파일 하나를 다운 받아 준다.

    cos.jar
    0.05MB

    다운 받은 후 이클립스내에서 webapp->lib 폴더에 넣어준다.

    사진 업로드 할 때 cos 라는 라이브러리가 가장 간단하게 사용 할 수 있는 라이브러리이다.

    이거 외에도 commons-fileupload.jar 이랑 commons-io.jar를 이용해서도 업로드 해 줄 수 있다.

    (참고로 이 두가지는 Apache API이다.)

     

     

     

    그리고 업로드 폴더를 하나 만들어서 JSP 파일을 작성한다.

    enctype="multipart/formdata"는 파일 업로드시 필수로 들어가야 하는 속성이다.

     

    Servlet 파일을 만들어 준다.

    먼저 forward 시켜 줄 위치를 지정 시켜 준다.

    @WebServlet("/upload")
    public class uploadcontroller extends HttpServlet {
    	private static final long serialVersionUID = 1L;
           
    
    	protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException {
    		
    		//요청이 들어오면 get으로 먼저 들어옴
    		//포워드 시켜 준다.0 
    		String view = "/WEB-INF/jsp/upload/index.jsp";
    		
    		RequestDispatcher rd = request.getRequestDispatcher(view);   
    		rd.forward(request, response);

     

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException {
    														 
    		MultipartRequest multi = new MultipartRequest(request, 
    				"c:\\Users\\HP\\upload",  //저장 위치
    				1024*1024*10 ,"utf-8",	 // byte단위의 파일크기
    				new DefaultFileRenamePolicy()); //이름이 중복 되면 새로운 이름을 생성 해 주는 객체
    		String title = multi.getParameter("title");
    		String fileName = multi.getFilesystemName("uploadFile");
    		
    		System.out.println("일반 텍스트 데이터 : " + title);
    		System.out.println("업로드 된 파일의 이름 : " + fileName);

    System.out.println는 아까 우리가 index파일에 인풋 두개를 작성 했고 두개의 이름이 달라서 콘솔창에서 확인하기 위한 용도로 작성 해 준다.

    제대로 구동 된다면 아까 지정 해 준 위치에 전송한 사진이 업로드 된 것을 확인 할 수 있다.

     

    그 다음 업로드 된 파일을 다운로드 받거나 하는 과정을 해보자 

    서버는 자신의 영역밖에 접근 못하기 때문에 (webapp쪽) 그쪽으로 경로를 다시 바꿔주자

     

    protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    			throws ServletException, IOException {
    														 
    		MultipartRequest multi = new MultipartRequest(request, 
    				request.getServletContext().getRealPath("/upload"),  //저장 위치 webapp쪽으로 변경
    				1024*1024*10 ,"utf-8",	 // byte단위의 파일크기
    				new DefaultFileRenamePolicy()); //이름이 중복 되면 새로운 이름을 생성 해 주는 객체
    		String title = multi.getParameter("title");
    		String fileName = multi.getFilesystemName("uploadFile");
    		
    		System.out.println("RealPath : " + request.getServletContext().getRealPath("/upload"));//출력문을 통해 저장 위치 확인
    		System.out.println("일반 텍스트 데이터 : " + title);
    		System.out.println("업로드 된 파일의 이름 : " + fileName);

     

     

    이클립스에서 Tomcat 서버를 실행 할 때

    workspace에 있는 프로젝트를 복사해서 별도의 공간에 배치한다.(배포)

    배포가 완료되면 Tomcat 서버는 배포 위치의 코드와 파일을 사용하여 동작하게 된다.

    'Servlet-JSP' 카테고리의 다른 글

    Annotation을 이용한 URL 매핑하기  (0) 2022.01.07
    Eclipse로 Servlet 서버 만들기  (0) 2022.01.07
    Servlet/JSP 이란  (0) 2022.01.07
    JSP로 어설픈 구구단 만들기  (0) 2021.11.23
    톰캣-이클립스 서버 구성하기  (0) 2021.11.23
Designed by Tistory.