ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 파일 다운로드
    개발/코딩관련 2019. 2. 14. 15:37
    반응형

    파일 다운로드 받기


    일단 로컬에 있는 파일을 다운받는거부터 시작


    js단에서  서브밋으로 날려야 실행됨


    1.스크립트

    1
    2
    3
    4
    5
                    var comSubmitForm = this.createSubmitForm('commonForm');
                    comSubmitForm.setUrl('/file/manualDown.do');
                    comSubmitForm.addParam("FILE_PATH", downObj.path);
                    comSubmitForm.addParam("FILE_NAME", downObj.name);
                    comSubmitForm.submit();


    2. 자바

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
            //실제파일이 저장된 위치
            byte fileByte[] = FileUtils.readFileToByteArray(new File("C:\\Users\\~~~\\manual.pdf"));    
            response.setContentType("application/octet-stream");
            response.setContentLength(fileByte.length);
            //저장될 
            response.setHeader("Content-Disposition""attachment; fileName=\"" + URLEncoder.encode("manual2.pdf","UTF-8")+"\";");
            response.setHeader("Content-Transfer-Encoding""binary");
            response.getOutputStream().write(fileByte);
            response.getOutputStream().flush();
            response.getOutputStream().close();
    cs



    3. 결과

    크롬기준으로 바로 다운로드 폴더에 저장이 된다.

    인코딩하는건 한글명으로 된 파일때문이라고 하는데 해보진 않았다.


    스크립트에서 path, name을 넘겨줬지만 자바에서 쓰진 않았다. 일단 기능이 되는지만 확인하려고 이제 정리해야지


    그리고 왜 ajax가 아닌 submit으로 해야 제대로 작동하냐면, 기본적으로 파일 다운로드의 경우 Ajax를 사용하지 못한다고 한다. Ajax를 사용할 경우 파일 다운로드 응답을 브라우저에서 처리하지 않고 ajax내에서 처리하기때문에 브라우저에서의 파일 다운로드는 사용이 불가능하다. 때문에 submit 또는 a 태그등등 몇가지의 동기방식을 이용해야 한다.


    참고 : https://m.blog.naver.com/PostView.nhn?blogId=qp_1004&logNo=220234990620&proxyReferer=https%3A%2F%2Fwww.google.com%2F


    반응형

    '개발 > 코딩관련' 카테고리의 다른 글

    크롬 전체화면  (0) 2020.01.23
    javascript에서 문자열을 변수명으로 바꾸기  (0) 2019.12.13
    개발하면서 궁금한점들...  (0) 2019.10.15
    preventDefault vs stopPropagation 차이  (0) 2019.03.11
    톰캣 구동시 에러  (0) 2019.02.22

    댓글

Designed by Tistory.