一. Controller类

    public ResponseEntity<InputStreamResource> downReport(HttpServletResponse httpServletResponse, @RequestBody DataVerifyReportPaging param){
        ResponseEntity<InputStreamResource> report = xyReportService.downReport(httpServletResponse, param);
        return report;
    }

二. Service类

/**
     *
     * @param response
     * @param filePath 文件绝对路径
     * @param fileName 文件名
     * @throws IOException
     */
public void download(HttpServletResponse response, String pdfPath, String fileName) throws IOException {
        // 设置信息给客户端不解析
        String type = new MimetypesFileTypeMap().getContentType(pdfPath);
        // 设置contenttype,即告诉客户端所发送的数据属于什么类型
        response.setHeader("Content-type",type);
        // 设置编码
        String code = new String(fileName.getBytes("utf-8"), "iso-8859-1");
        // 设置扩展头,当Content-Type 的类型为要下载的类型时 , 这个信息头会告诉浏览器这个文件的名字和类型。
        response.setHeader("Content-Disposition", "attachment;filename=" + code);
        response.setContentType("application/octet-stream;charset=ISO8859-1");
        response.addHeader("Pargam", "no-cache");
        response.addHeader("Cache-Control", "no-cache");
        download(pdfPath, response);
    }

    public void download(String pdfPath, HttpServletResponse res) throws IOException {
        // 发送给客户端的数据
        // 读取filename
        File file = new File(pdfPath);
        long length = file.length();
        res.addHeader("Content-Length",String.valueOf(length));
        OutputStream outputStream = res.getOutputStream();
        byte[] buff = new byte[1024];
        BufferedInputStream bis = null;
        FileInputStream inputStream = new FileInputStream(file);
        bis = new BufferedInputStream(inputStream);
        int i = bis.read(buff);
        while (i != -1) {
            outputStream.write(buff, 0, buff.length);
            outputStream.flush();
            i = bis.read(buff);
        }
        bis.close();
        outputStream.close();
    }
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐