반응형
@RequestMapping(value = "/downloadManual", method = RequestMethod.GET)
public void downloadManual(HttpServletResponse response) throws Exception {

    FileInputStream fileInputStream = null;
    OutputStream out = null;
    try {
        String path = linuxRootPath + "Manual.docx"; // 경로에 접근할 때 역슬래시('\') 사용

        File file = new File(path);
        response.setHeader("Content-Disposition", "attachment;filename=" + file.getName()); 
		// 다운로드 되거나 로컬에 저장되는 용도라는 정보를 알려주는 헤더                                                                                            

        fileInputStream = new FileInputStream(path); // 파일 읽어오기
        out = response.getOutputStream();

        int read = 0;
        byte[] buffer = new byte[1024];
        while ((read = fileInputStream.read(buffer)) != -1) { // 1024바이트씩 계속 읽으면서 outputStream에 저장, -1이 나오면 더이상 읽을
            out.write(buffer, 0, read);
        }
        fileInputStream.close();
        out.close();
    } catch (Exception e) {
        fileInputStream.close();
        out.close();
        throw new Exception("download error");
    } finally {
        fileInputStream.close();
        out.close();
    }
}

 

반응형