• 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;
            }
        }
    }
    
  • 相关阅读:
    2981 大整数加法
    1160 矩阵的最大值(指针专题)
    1159 最大的两个数(指针专题)
    1127 矩阵乘积
    1126 布尔矩阵的奇偶性
    1125 上三角矩阵的判断
    1124 两个有序数组合并
    1123 最佳校友
    1122 小明的调查作业
    1121 电梯
  • 原文地址:https://www.cnblogs.com/chengxuxiaoyuan/p/12329145.html
Copyright © 2020-2023  润新知