스프링(Spring) 에서 첨부파일 다운로드 위한 세팅 및 예제 소스코드 :: 소림사의 홍반장!

업로드용 소스

 

@RequestMapping(value = "/create", method = RequestMethod.GET)

    public String precreate() {

        return "reboard/update";

    }

 

    // 글쓰기

    // create POST 방식으로 받게끔

    // public String create(ReboardDto dto) 해서 dao.create 하세요

    @RequestMapping(value = "/create", method = RequestMethod.POST)

    public String create(ReboardDto dto) throws Exception {

        // 파일 업로드 체크

        MultipartFile f = dto.getFile();

        if (!f.isEmpty()) { // 파일 업로드가 됐다면

            String orgname = f.getOriginalFilename();

            String newname = orgname + System.currentTimeMillis()

                    + f.getSize();

//            String path = servletContext.getRealPath("/resources");

            // d:/upload 폴더를 생성한다.

            // server clean 하면 resources 경로의 것이 다 지워지기 때문에

            // 다른 경로로 잡는다(실제 서버에서는 위의 방식으로)

            String path = "c:/upload";

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

            File file = new File(path + File.separator + newname);

            dto.setOrgname(orgname);

            dto.setNewname(newname);

            f.transferTo(file);

        }

       

        if (dao.create(dto))

            System.out.println("삽입완료");

        return "redirect:/re/list";

 

    }

 

 

 

 

 

다운로드용 소스

 

@RequestMapping(value="/down/{no}",method=RequestMethod.GET)

    public void down(@PathVariable String no

            , HttpServletResponse response) throws Exception {

        ReboardDto dto = dao.read(no);

        String orgname = dto.getOrgname();

        String newname = dto.getNewname();

 

        // MIME Type application/octet-stream 타입으로 변경

        // 무조건 팝업(다운로드창)이 뜨게 된다.

        response.setContentType("application/octet-stream");

       

        // 브라우저는 ISO-8859-1을 인식하기 때문에

        // UTF-8 -> ISO-8859-1로 디코딩, 인코딩 한다.

        orgname = new String(orgname.getBytes("UTF-8"), "iso-8859-1");

       

        // 파일명 지정

        response.setHeader("Content-Disposition", "attachment; filename=\""+orgname+"\"");

       

        OutputStream os = response.getOutputStream();

        // String path = servletContext.getRealPath("/resources");

        // d:/upload 폴더를 생성한다.

        // server clean 하면 resources 경로의 것이 다 지워지기 때문에

        // 다른 경로로 잡는다(실제 서버에서는 위의 방식으로)

        String path = "c:/upload";

        FileInputStream fis = new FileInputStream(path + File.separator + newname);

        int n = 0;

        byte[] b = new byte[512];

        while((n = fis.read(b)) != -1 ) {

            os.write(b, 0, n);

        }

        fis.close();

        os.close();

    }

 

 

 

 

 

 

다른 카테고리의 글 목록

Dev. 스프링/참고소스 및 예제 카테고리의 포스트를 톺아봅니다