天天看点

下载文件模板

从JAR中读取文件,不能使用resource.getFile() 方法,使用resource.getInputStream()

注意如果在JAR中使用resource.getFile(),会报错。因为当 resource.getFile()方法,Spring是访问一个文件系统路径,但是它不能访问JAR中的路径。可以通过resource.getInputStream()方式来进行获取文件数据。

例如:

@GetMapping("/download")
    @ApiOperation("下载模板文件")
    public void download(HttpServletResponse res) {
        res.setCharacterEncoding("UTF-8");
        res.setHeader("content-type", "application/octet-stream;charset=UTF-8");
        res.setContentType("application/octet-stream;charset=UTF-8");
        try {
            ResourceLoader resourceLoader = new DefaultResourceLoader();
            @Cleanup InputStream inputStream = resourceLoader.getResource("classpath:/templates/excel/ActivityTemplate.xlsx").getInputStream();
            res.setHeader("Content-Disposition", "attachment;filename=" + java.net.URLEncoder.encode("数据模板", "UTF-8"));
            byte[] fileData = IOUtils.toByteArray(inputStream);
            res.getOutputStream().write(fileData);
        } catch (UnsupportedEncodingException e1) {
            e1.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }