zoukankan      html  css  js  c++  java
  • springmvc实现文件下载

    springmvc实现文件下载

    使用springmvc实现文件下载有两种方式,都需要设置response的Content-Disposition为attachment;filename=test2.png

    第一种可以直接向response的输出流中写入对应的文件流

    第二种可以使用 ResponseEntity<byte[]>来向前端返回文件

    一、使用response

    
    @RestController
    @RequestMapping("/download")
    public class DownloadController {
    
        @RequestMapping("/d1")
        public ResultVo<String> downloadFile(HttpServletResponse response){
    
            String fileName="test.png";
            try {
                //获取页面输出流
                ServletOutputStream outputStream = response.getOutputStream();
                //读取文件
                byte[] bytes = FileUtils.readFileToByteArray(new File("D:\my-study\test2.png"));
                //向输出流写文件
                //写之前设置响应流以附件的形式打开返回值,这样可以保证前边打开文件出错时异常可以返回给前台
                response.setHeader("Content-Disposition","attachment;filename="+fileName);
                outputStream.write(bytes);
                outputStream.flush();
                outputStream.close();
                return ResultVoUtil.success("success");
            } catch (IOException e) {
                return ResultVoUtil.error(e);
            }
    
        }
    }
    

    推荐使用这种方式,这种方式可以以json形式给前台返回提示信息。

    二、使用ResponseEntity

    
    @Controller
    @RequestMapping("/download2")
    public class DownloadController2 {
    
        private final static Logger logger= LoggerFactory.getLogger(CategoryDataController.class);
    
    
        @GetMapping("/d2")
        public ResponseEntity<byte[]> download2(){
            //获取文件对象
            try {
                byte[] bytes = FileUtils.readFileToByteArray(new File("D:\my-study\bill-admin\test2.png"));
                HttpHeaders headers=new HttpHeaders();
                headers.set("Content-Disposition","attachment;filename=test2.png");
                ResponseEntity<byte[]> entity=new ResponseEntity<>(bytes,headers,HttpStatus.OK);
                return entity;
            } catch (IOException e) {
                logger.error("下载出错:",e);
                return null;
            }
        }
    }
    
  • 相关阅读:
    SpringMVC后台token防重复提交解决方案
    浅析微信支付:开通免充值产品功能及如何进行接口升级指引
    浅析微信支付:查询订单和关闭订单
    浅析微信支付:商户平台代金券或立减优惠开通、指定用户代金券发放、查询等
    linux内核源码分析
    linux内存源码分析
    linux内存源码分析
    linux内存源码分析
    linux内存源码分析
    linux内存源码分析
  • 原文地址:https://www.cnblogs.com/chengxuxiaoyuan/p/12329145.html
Copyright © 2011-2022 走看看