본문 바로가기

Learning/JSP

파일 전송

  • webcontent에 file 이라는 폴더 만들기. upload.jsp 생성

  • cos.jar 라는 라이브러리 파일을 lib 폴더에 넣음. 

  • com.file 패키지 만들고 FileUploadAction.java 서블릿 생성 (경로는 /file/upload.do)

  • WebContent안에 upload폴더를 만들기 (파일 저장 경로)

 

 

  • upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<form method="post" action="upload.do" enctype="multipart/form-data">

글쓴이: <input type="text" name="name"><br>

제목: <input type="text" name="title"><br>

파일 지정하기: <input type="file" name="uploadFile"><br>

<input type="submit" value="전송">

</form>

</body>

</html>

  • FileUploadAction.java

 

package com.file;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.annotation.WebServlet;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.oreilly.servlet.MultipartRequest;

import com.oreilly.servlet.multipart.DefaultFileRenamePolicy;

/**

 * Servlet implementation class FileUploadAction

 */

@WebServlet("/file/upload.do")

public class FileUploadAction extends HttpServlet {

    private static final long serialVersionUID = 1L;

      

    /**

     * @see HttpServlet#HttpServlet()

     */

    public FileUploadAction() {

        super();

        // TODO Auto-generated constructor stub

    }

    /**

     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)

     */

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    /**

     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)

     */

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

        request.setCharacterEncoding("utf-8");

        int uploadFileSizeLimit=5*1024*1024; //5mb로 지정

        String encType="UTF-8";

        String savePath="upload";

        ServletContext context=getServletContext();

        String uploadFilePath=context.getRealPath(savePath);

        System.out.println("서버 상의 실제 디렉토리: "+uploadFilePath);

        

        //multipart/form 방식은 request.getParameter로 받아올 수 없음

        MultipartRequest multi=new MultipartRequest(

                request, //request객체

                uploadFilePath, //서버상의 실제 디렉토리

                uploadFileSizeLimit, //최대 업로드 파일 크기

                encType, //인코딩 방법

                new DefaultFileRenamePolicy()); //동일 파일 새이름 부여

        //업로드된 파일이름 구하기

        String fileName=multi.getFilesystemName("uploadFile");

        System.out.println("fileName:"+fileName);

        if(fileName==null) { //파일 업로드 안됨

            System.out.println("파일 업로드 되지 않았음");

        }else {

            response.setContentType("text/html;charset=utf-8");

            PrintWriter out=response.getWriter();

            out.println("<b>글쓴이: "+multi.getParameter("name")+"<br>");

            out.println("<b>제목: "+multi.getParameter("title")+"<br>");

            out.println("<b>파일명: "+fileName);

        }

    }

}