下载文件(预览或直接下载)

    @RequestMapping(value="/reportPathApi",method=RequestMethod.GET)
    public void downloadPrivacyAgreement(
            HttpServletResponse response,
            @RequestParam("reportPath") String reportPath,
            @RequestParam("isOnLine") boolean isOnLine
     ) throws IOException{
        // 判断文件是否存在
        File f = new File(reportPath);
        if (!f.exists()) {
            response.sendError(404, "File not found!");
            return;
        }
        BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
        byte[] buf = new byte[1024];
        int len = 0;

        // 设置页面不缓存清除首部空白行
        response.reset();
        if (isOnLine) { // 在线打开方式
            URL u = new URL("file:///" + reportPath);
            response.setContentType(u.openConnection().getContentType());
            response.setHeader("Content-Disposition", "inline; filename=" + f.getName());
            // 文件名应该编码成UTF-8
        } else { // 纯下载方式
            response.setContentType("application/x-msdownload");
            response.setHeader("Content-Disposition", "attachment; filename=" + f.getName());
        }
        OutputStream out = response.getOutputStream();
        while ((len = br.read(buf)) > 0)
            out.write(buf, 0, len);
        br.close();
        out.close();
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容