[Spring, JAVA] 파일 복사(FileChannel 이용)

2017. 9. 21. 17:59·FrameWork/Spring
728x90
반응형

방식은 이러합니다.
SQL 쿼리문에서 파일정보를 가져옵니다.
saveNm과 fileNm 매칭하여 리스트들을 불러와 FileChannel객체를 이용하여 파일을 카피합니다.
이 방법이 local파일 카피속도는 제일 빠르다.(제 생각..)
filecopy 메소드에서 경로를 잘지정하고 DB에서 saveNm과 fileNm만 잘 가지고 오면된다.

Controller.java

@RequestMapping(value = "/fileDownloadY.do", method = RequestMethod.GET)
    public void filedownloadY(HttpServletRequest request, HttpServletResponse response
                                                                , @RequestParam(value="approval", required=false) String approval
                                                                , @RequestParam(value="receiptClf", required=false) String receiptClf
                                                                , @RequestParam(value="deleteYn",  required=false) String deleteYn
                                                                ) throws Exception {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("approval", approval);
            map.put("receiptClf", receiptClf);
            List<Map<String,Object>> fileList = communityService.selectFileListY(map);
            for(int i=0; i<fileList.size(); i++){
                String paramFileName = "";
                try{
                    paramFileName = StringUtil.isNullToString(fileList.get(i).get("saveNm"));
                    String oriFileName = StringUtil.isNullToString(fileList.get(i).get("fileNm"));
                    FileDownloadUtil fileDownloadUtil = new FileDownloadUtil();
                    fileDownloadUtil.downloadY(request, response, paramFileName, oriFileName, "");
                } catch(Exception e) {
                }
            }
    }
 

 

FileDownloadUtil.java

public void downloadY(HttpServletRequest request, HttpServletResponse response, String paramFileName,
            String oriFileName, String deleteYn) throws Exception {
        byte[] buffer = new byte[BUFF_SIZE];

        ServletOutputStream out_stream = null;
        BufferedInputStream in_stream = null;
        String filename = new String(paramFileName.getBytes(), CHARSET);

        if ((filename != null && filename.indexOf("..") > -1) || (filename != null && filename.indexOf("..") > -1)) {
            throw new RuntimeException("Not Authorized!!!");
        }

        File file = new File(UPLOAD_PATH_PRE + filename);

        if (file.length() > 0) {
            fileCopy(filename, filename);
        } else {
            System.out.println("unknown!!!!!!!!!!!!!!!!!!!!!");
        }
    }

public void fileCopy(String inFileName, String outFileName) {
        try {
            FileInputStream inputStream = new FileInputStream(UPLOAD_PATH_PRE + inFileName);
            FileOutputStream outputStream = new FileOutputStream("D:\\download\\일반\\" + outFileName);

            FileChannel fcin = inputStream.getChannel();
            FileChannel fcout = outputStream.getChannel();

            long size = fcin.size();
            fcin.transferTo(0, size, fcout);

            fcout.close();
            fcin.close();

            outputStream.close();
            inputStream.close();

        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
 

 

728x90
반응형

'FrameWork > Spring' 카테고리의 다른 글

[SPRING] HTML5 SOCKET 통신 [sample]  (0) 2017.12.11
[SPRING] AOP를 이용하여 어노테이션(annotation) 만들기(활용 / 사용법)  (0) 2017.12.04
[SPRING] 스프링과 마이바티스 에서 다중 데이타소스 사용하기  (0) 2017.10.19
[SPRING] FTP서버의 이미지 프리뷰  (0) 2017.08.28
[Spring] [Excel] 웹에서 DB를 엑셀파일로 추출시키기.  (0) 2017.08.24
'FrameWork/Spring' 카테고리의 다른 글
  • [SPRING] AOP를 이용하여 어노테이션(annotation) 만들기(활용 / 사용법)
  • [SPRING] 스프링과 마이바티스 에서 다중 데이타소스 사용하기
  • [SPRING] FTP서버의 이미지 프리뷰
  • [Spring] [Excel] 웹에서 DB를 엑셀파일로 추출시키기.
밍글링글링
밍글링글링
mingling - 밍글링, 밍글밍글링. 코드와 어우러지다. IT/ 프로그래밍/소스
    반응형
    250x250
  • 밍글링글링
    mingling
    밍글링글링
  • 전체
    오늘
    어제
    • 밍글링글링 (407) N
      • Flutter (2)
      • 일상생활 (8)
        • 리뷰 (1)
        • 생활정보 (4)
        • 맛집 (0)
        • 여행 (0)
        • 모든정보 (3)
      • JAVA (126)
        • 개념 (6)
        • 예제 (115)
        • Exception (2)
      • C (1)
        • C (1)
        • C++ (0)
        • C# (0)
      • JS (29)
        • JavaScript (18)
        • JQuery (5)
        • AJax (0)
        • NODE.JS (6)
        • Angular.JS 2.0 (0)
      • WEB (87)
        • HTML (6)
        • CSS (61)
        • JSP (20)
        • JSTL (0)
      • FrameWork (8)
        • Spring (8)
        • BootStrap (0)
        • MyBATIS (0)
        • JUnit (0)
      • 외부 라이브러리 (5)
      • 공유 소스 관리 (5)
        • Git (5)
        • SVN (0)
      • 빅데이터 프로그래밍 (37)
        • Python (37)
        • R Programming (0)
      • DB (7)
        • ORACLE (0)
        • MySql (6)
      • Development Tools (7)
        • StarUML (0)
        • eXERD (0)
        • Eclipse (4)
      • SKILL (6)
        • Migration (0)
        • Security (6)
      • MicroSoft (0)
        • Excel (0)
        • Word (0)
      • Android (0)
      • Server (21)
        • Ubuntu (5)
        • Linux (15)
      • IOS (0)
      • XML (0)
      • 미디어 (0)
      • 공지사항 (3)
      • NETWORK (1)
      • 게임 (4)
        • 피파 (1)
        • 리니지M (0)
        • 배틀그라운드 (1)
        • 듀랑고 (2)
      • 세상 이슈 (6)
      • 일렉트론 (0)
      • 대회 소식 (4)
      • 업무 (2)
      • Express, Vue (6)
      • docker (11)
      • svelte (3)
      • 블록체인 (1)
      • IT (10) N
      • Rust (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    css tb
    proxy pass
    servlet class
    AI 코딩 에이전트
    nginx ssl 적용
    css block
    vue cli
    Java Array
    rust linux
    Extension Bisect
    Rust lang
    svelte
    자바 객체 지향
    nginx ssl 설정
    자바 배열
    프런트엔드
    자바 클래스
    VS Code 팁
    css perspective
    css list
    css table
    vscode
    jsp include
    러스트
    오류
    티스토리 자동화
    mysql db
    ssl 인증서 발급
    docker
    vue 설치
    css transition
    API 설계
    css float
    브라우저 자동화
    자바 exception
    클론코딩
    React Compiler
    java casting
    spring java
    gitlab 설치
    SSL 인증서
    Node
    jsp parameter
    nginx
    에디터 팁
    자바 생성자
    ubuntu
    자바 for문
    lang rust
    리눅스 설치
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
밍글링글링
[Spring, JAVA] 파일 복사(FileChannel 이용)
상단으로

티스토리툴바