SpringBoot 프로젝트를jar로 묶은 후 Excel 파일을 다운로드하여 열 수 없습니다.

2059 단어 SpringBoot

앞말


필자는 SpringBoot 프로젝트에서 Excel 템플릿을 다운로드하는 수요가 있는데 프로젝트가 아이디어에서 뛰기 시작하면 파일 다운로드가 성공하고 정상적으로 열립니다.프로젝트를jar로 포장한 후 테스트 환경에 배치하면 다운로드한 템플릿을 열 수 없습니다. 이 문제에 대해 기록합니다.

솔루션:


쓸데없는 말은 하지 않고 바로 코드를 붙이는 방식이 직접 측정하는 데 효과가 있다.참고: 템플릿은 resources/static/pattner 디렉터리에 다운로드 인터페이스에 놓입니다.
    /**
     *  
     * @param response
     */
    @ApiOperation(" ")
    @GetMapping("/download/pattern")
    public void downloadPattern(HttpServletRequest request, HttpServletResponse response){
        // 
        String fileName = " ";
        // , 
        try(InputStream in = new ClassPathResource("\\static\\pattern\\ .xlsx").getInputStream()) {
            XSSFWorkbook workbook = new XSSFWorkbook(in);
            FileUtil.downFile(fileName,response,workbook);
        }catch (Exception e){
            e.printStackTrace();
            throw new Exception(" ",0);
        }
    }


다운로드() 방법:
/**
 *  
 */
@Log4j2
public class FileUtil {
	 /**
     *  Excel 
     * @param fileName   
     * @param response
     * @param workbook Excel 
     * @throws IOException
     */
    public static void downFile(String fileName,
                                HttpServletResponse response, XSSFWorkbook workbook) {
        try(OutputStream os = response.getOutputStream()) {
            fileName = URLEncoder.encode(fileName, "UTF-8");
            response.reset();
            response.setContentType("application/binary;charset=utf-8");
            response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xlsx");
            workbook.write(os);
            os.flush();
        } catch (Exception e) {
            log.info("fileName: "+fileName + ",  ! ",e);
            throw new Exception();
        }
    }
}

----------------------------------------------------------------------------------------------------------------------------------------------------------

좋은 웹페이지 즐겨찾기