ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSP 절대 경로로 업로드 그런데 상대 경로는?
    WEB/JSP 2018. 11. 10. 04:55

    글 목적

    JSP 파일 업로드를 공부하면서 어떻게 파일 업로드를 해야되고, 어디 경로에 저장되는지 배웠다.

    그리고 궁금한 점들도 공부해보면서 어떻게 하면 되는지 왜 안되는지 기록하고, 공부하면서 도움 

    될만한 블로그들을 소개하려고 한다.




    필수 라이브러리

    파일 업로드를 위한 필수 라이브러리가 필요한데 cos.jar라고 하는 라이브러리다.

    이 라이브러리를 서블렛 사이트에서 다운 받아야된다.

    사이트 링크





    설치방법
    설치방법은 사이트에 들어가셔서 왼쪽 메뉴창에 있는 com.oreilly.servlet라는 게시판을 클릭하면

    제일 아래에 cos-26Dec2008.zip이라는 파일이 있는데 그것을 다운받으면 된다.

    아니면 아래 파일 링크를 다운받아도 된다.

    cos-26Dec2008.zip






    프로젝트 디렉토리





    샘플 파일

    day10.zip





    fileForm.jsp

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

        pageEncoding="UTF-8"%>

    <!DOCTYPE html>

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>파일 업로드 예제</title>

    </head>

    <body>

    <h2>파일 업로드 예제/절대경로 저장</h2>

    <form action="fileFormOk.jsp" method="post" enctype="multipart/form-data">

    첨부 파일 : <input type="file" name="file"><br />

    <input type="submit" value="File Upload">

    </form>

    </body>

    </html> 



    fileFormOk.jsp

    <%@page import="java.util.Enumeration"%>

    <%@page import="com.oreilly.servlet.multipart.DefaultFileRenamePolicy"%>

    <%@page import="com.oreilly.servlet.MultipartRequest"%>

    <%@page import="javax.servlet.*" %>

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

        pageEncoding="UTF-8"%>

    <%

    //절대경로

    String path = request.getRealPath("fileUpload");//파일이 저장되는 경로

    //상대 경로저장

    //String path = request.getSession().getServletContext().getRealPath("fileUpload");

    /*

    * 이 부분은 상대 경로로 저장하려고 했으나 상대 경로로 저장이 안되고, 절대 경로로 저장이 된다.

    * getContextPath()를 사용하면 Servlet2.5 이상부터 사용이 가능하다고 하는데, 이 부분은 어떻게 해결해야될지 감이 안잡힘.

    */

    int size = 1024 * 1024 * 10; // 업로드 파일 용량: 10M

    String file = ""; //업로드 파일 이름(오리지널 파일이름이 있으면, 자동으로 1,2,3이 붙여진다.)

    String oriFile = ""; // 이전 업로드 파일 이름

    //상대경로

    //String file =""; // 상대경로 업로드파일

    //String oriFile =""; //

    try{

    // 정보를 갖고 있는 request객체, 서버쪽 경로, 업로드 용량, 파일이름깨지지않게,오리지널파일이름뒤에 1,2,3 붙이게하는 메소드)

    MultipartRequest multi = new MultipartRequest(request, path, size, "UTF-8", new DefaultFileRenamePolicy());

    //MultipartRequest multi = new MultipartRequest(request, path, size, "UTF-8", new DefaultFileRenamePolicy());

    Enumeration files = multi.getFileNames();

    String str = (String)files.nextElement();

    file = multi.getFilesystemName(str);// 실제 파일 이름

    oriFile = multi.getOriginalFileName(str); // 이전 파일 이름

    /* -- 상대 경로용 

    Enumeration files = multi.getFileNames();

    String str = (String)files.nextElement();

    file = multi.getFilesystemName(str);

    oriFile = multi.getOriginalFileName(str);

    */

    } catch (Exception e) {

    e.printStackTrace();

    }

    %>

    <!DOCTYPE html>

    <html>

    <head>

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    <title>파일 업로드 결과</title>

    </head>

    <body>

    <div align="center">

      <%

      if(file == null){

      out.println("파일이 업로드 되지 않았습니다.");

      } else{

      out.println(file+"파일이 저장되었습니다");

      }

      %>

    </div>


    </body>

    </html> 




    예상에러
    절대경로에 있는곳에 업로드 파일을 생성해줘야되는데 생성 안해줘서 생기는 에러라고 예상된다.
    로컬디스크(C:) -> 사용자 ->사용자(사용자 이름) -> eclipse-workspace -> .metadata -> .plugins ->
    org.eclipse.wst.server.core -> tmp[숫자] ->wtpwebapps -> 프로젝트이름 -> 여기에 fileUpload 라는 
    폴더 생성!!!
    폴더 생성하고 전체 경로를 보면 아래와 같아야된다.



    파일 저장 절대 경로

    ~\eclipseworkspace\.metadata\.plugins

    \org.eclipse.wst.server.core\tmp4\wtpwebapps\dpacs\fileUpload 


    빨간색이 워크스페이스에 있는 이클립스 경로입니다. 다른말로 절대 경로입니다.

    dpacs는 프로젝트 이름이고

    fileUpload는 폴더 이름입니다.




    자가 궁금한점

    구글링하다보면 절대경로에 대한 설명은 많은데 상대경로에 대한 설명은 없거나 잘 없다.

    왜그런지는 아직 잘 모르겠지만, 파일저장을 상대 경로에 할 수 없기 때문이 아닐까 싶다.

    해결책이 있다면 댓글로 공유해주시면 감사하겠습니다.





    학습에 도움됐거나 참조한 블로그

    1. 블로그 ----> JSP 정리 - 파일 업로드/다운로드 기능

    2. 블로그 ----> InputStream, OutputStream으로 파일 이동하기





    위 글이 도움이 되셨으면 좋아요와 댓글 부탁드립니다.




    'WEB > JSP' 카테고리의 다른 글

    http란?  (0) 2018.11.30
    nio란?  (0) 2018.11.30
    공부하는데 참조한 블로그  (0) 2018.11.09
    eclipse show empty error message 이클립스가 빈 에러 메세지를 보여준다.  (0) 2018.11.08
    favicon img 생성 및 적용하기  (0) 2018.11.05

    댓글

© 2018 T-Story. All right reserved.