位置: IT常识 - 正文

springboot:各种下载文件的方式(springboot常用)

编辑:rootadmin
springboot:各种下载文件的方式 文章目录springboot:各种下载文件的方式一、使用response输出流下载二、使用ResponseEntity三、注意springboot:各种下载文件的方式一、使用response输出流下载

推荐整理分享springboot:各种下载文件的方式(springboot常用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:spring springboot,springboot gui,spring springboot,springboot详细讲解,springboot gui,springboot详细讲解,spring springboot,springboot详细讲解,内容如对您有帮助,希望把文章链接给更多的朋友!

springboot:各种下载文件的方式(springboot常用)

注意第一种方式返回值必须为void

@GetMapping("/t1") public void down1(HttpServletResponse response) throws Exception { response.reset(); response.setContentType("application/octet-stream;charset=utf-8"); response.setHeader( "Content-disposition", "attachment; filename=test.png"); try( BufferedInputStream bis = new BufferedInputStream(new FileInputStream("E:\\desktop\\1.png")); // 输出流 BufferedOutputStream bos = new BufferedOutputStream(response.getOutputStream()); ){ byte[] buff = new byte[1024]; int len = 0; while ((len = bis.read(buff)) > 0) { bos.write(buff, 0, len); } } }二、使用ResponseEntity @GetMapping("/t2") public ResponseEntity<InputStreamResource> down2() throws Exception { InputStreamResource isr = new InputStreamResource(new FileInputStream("E:\\desktop\\1.png")); return ResponseEntity.ok() .contentType(MediaType.APPLICATION_OCTET_STREAM) .header("Content-disposition", "attachment; filename=test1.png") .body(isr); } @GetMapping("/t3") public ResponseEntity<ByteArrayResource> down3() throws Exception { byte[] bytes = Files.readAllBytes(new File("E:\\desktop\\1.png").toPath()); ByteArrayResource bar = new ByteArrayResource(bytes); return ResponseEntity.ok() .contentType(MediaType.APPLICATION_OCTET_STREAM) .header("Content-disposition", "attachment; filename=test2.png") .body(bar); }三、注意

后端使用前三种的一种方式,请求方式使用非GET请求,前端使用Blob类型接收

某些情况下,在下载时需要向后端POST一些参数,这时需要前端做一定配合,将接收类型设定为Blob

@PostMapping("/t4") public ResponseEntity<ByteArrayResource> down4(String fileName, @RequestBody Map data) throws Exception { System.out.println(data); byte[] bytes = Files.readAllBytes(new File("E:\\desktop\\1.png").toPath()); ByteArrayResource bar = new ByteArrayResource(bytes); return ResponseEntity.ok() .contentType(MediaType.APPLICATION_OCTET_STREAM) .header("Content-disposition", "attachment; filename=test.png") .body(bar); }

前端代码(这里使用了原生的ajax):

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> function download() { var ajax = new XMLHttpRequest(); ajax.withCredentials = true; ajax.responseType = "blob"; const fileName = "ttt.txt"; ajax.open('post','http://localhost:7901/demo/down/file/t4?fileName=' + fileName); ajax.setRequestHeader("Content-Type","application/json;charset=utf-8"); // ajax.setRequestHeader("Accept","application/json;charset=utf-8"); ajax.send(JSON.stringify({firstName:"Bill", lastName:"Gates", age:62, eyeColor:"blue"})); ajax.onreadystatechange = function () { if (ajax.readyState==4 &&ajax.status==200) { console.log(ajax.response); const href = URL.createObjectURL(ajax.response); const a = document.createElement('a'); a.setAttribute('href', href); a.setAttribute('download', fileName); a.click(); URL.revokeObjectURL(href); } } } </script></head><body> <input type="button" value="下载" onclick="download();"/></body></html>
本文链接地址:https://www.jiuchutong.com/zhishi/288007.html 转载请保留说明!

上一篇:小程序怎么自定义导航栏,导航栏放图片、设置高度(小程序怎么自定义tabbar)

下一篇:最新接口的固态硬盘是什么(固态硬盘最新接口)

  • 附加税申报表里怎么填写
  • 无形资产的确认条件
  • 应付职工薪酬明细账模板
  • 所得税退税怎么办
  • 每月10万不要交税从什么时候开始
  • 民间非营利机构加班费记什么科目
  • 工业企业成本会计核算的对象是什么
  • 耕地转让权是什么意思
  • 房企所得税纳税义务发生时间
  • 研究开发费用加计扣除多少
  • 装修改造增值税税率
  • 纳税人提供不动产租赁服务采取预收款方式
  • 服务费发票怎么做分录
  • 为何要简并增值税税率?
  • 大连国税局工资待遇怎么样
  • 补偿金满一年不满一年半
  • 小规模纳税人自己可以开专票吗
  • 集团公司奖励发放遵循什么原则
  • 应收账款周转次数计算方法
  • 年终奖个税公式 2022
  • 委托加工物资什么意思
  • 分公司年报怎么查
  • 国际代理运费和港杂费一样吗
  • 收到负数购入发票怎么办
  • 企业投资的工程项目包括
  • 脚手架属于什么费用
  • php递归算法经典实例
  • PHP:Memcached::casByKey()的用法_Memcached类
  • hbuilder怎么下载
  • 非居民所得税代扣代缴
  • 木鱼的电脑
  • low是什么文件
  • 企业清算的会计科目
  • 公司企业名称变更,银行账号会变吗
  • 难以置信含义
  • uni-swiper-dot
  • 人工智能机器人保姆什么时候实现
  • php远程调用
  • 宝塔运行go
  • 个人所得税生产经营所得B表
  • 商贸公司库存商品有哪些
  • 奖金没有做到工资里怎么入账
  • 收到现金股利或债券利息时会计分录怎么做
  • 建设工程审计报告包括哪些内容
  • 赠品怎么做
  • 计提怎么理解
  • mysql基本查询
  • mysql金额用什么数据类型
  • 劳务外包人员算从业人员期末人数么
  • 先给发票后付款做账
  • 开销项负数发票怎么做账
  • 实收资本如何计算印花税及附加税
  • 进项税和销项税怎么理解
  • 投资收益是总账还是明细账
  • 网上报税有没有时间限制
  • 代扣代缴附加税怎么做账
  • 如何计算债券实际收益
  • 出口退税申报的报关单无电子信息
  • 子公司利润母公司还有其他方式吗
  • 租金是含税价还是含税金
  • 商业企业成本核算方法有哪些
  • sqlserver 触发器 redis
  • 联想电脑BIOS启动键
  • Win10预览版拆弹
  • 安装metpy
  • 重装系统需要主机吗
  • win10周年版
  • java word操作
  • Theme.AppCompat.Light的问题
  • 清除电脑开机痕迹
  • 常用正则表达式汇总
  • jquery常见的选择器
  • linux怎么设置
  • 批处理命令在哪个菜单中
  • javascript学习指南
  • c#未来展望
  • 江苏省税务局书记局长
  • 2023居民医保怎么交
  • 考公务员考国税局有什么要求吗
  • 树叶加树叶等于几
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设