位置: 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)

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

  • 农资公司性质
  • 宁波财税网会计之窗官网
  • 交增值税及附加税怎么做账
  • 小规模第一次申请发票能领多少
  • 企业所得税资产总额怎么填写
  • 已出库未开票要交税吗
  • 个人所得税里累计专项扣除是什么意思
  • 离线开票时间超时
  • 企业减免税享受什么
  • 一般纳税人核定征收申请条件
  • 购买的二手车可以抵扣进项税额吗
  • 印花税漏报,税务局怎么罚款
  • 公司开承兑需要多长时间
  • 小规模纳税人取得的专票转为一般纳税人之后能抵扣吗
  • 房屋租赁可以开住宿费吗
  • 股东入股资本公司的条件
  • 行政单位要纳税吗
  • 租房发票房产税怎么算
  • 个人独资企业个税税率表2023
  • 冲减留抵税额
  • 图书对方开具的证明
  • 支付税点是什么意思
  • 无需付款的其他应付款怎么做凭证?
  • 固定资产合计等于固定资产账面价值吗
  • 公司法人名下的车辆算公司的车辆吗
  • 什么情况下出租人可以解除合同
  • 劳务公司开具劳务费发票
  • windows11怎么显示我的电脑
  • 获取url的参数有哪些方法
  • php 字符串
  • 冲销多计提所得税
  • 约书亚树国家公园
  • 委托加工物资验收入库的金额
  • 业务招待费用列支范围
  • 二手车销售发票的开具怎么处理?
  • 增值税上期留抵税额
  • 待抵扣进项税计入其他应收款
  • 命名空间 php
  • 根据银行回单做流水账单
  • 固定资产清理需要交企业所得税吗
  • 费用退回如何记账
  • 售价金额核算法的优点有
  • mysql union和join
  • 企业无票支出该怎么做账
  • 出租车票做什么科目
  • 以前年度应收账款贷方余额如何调整
  • 商业承兑汇票怎么贴现
  • 劳务关系需要交税吗
  • 固定资产报废会计
  • 存货的盘盈
  • 入账价值有
  • 公众号认证小额打款流程
  • 离线开票时间超限怎么办 发票都已经报送
  • 销售产品产生的运输费计入什么科目
  • 电子发票开具流程?
  • 上月有留抵税额本月怎么申报
  • 补缴税务滞纳金
  • 事业单位小规模纳税人咨询服务的税率
  • 账面银行存款余额与实际余额不符
  • mysql m1
  • MySQL5.6下windows msi安装详细介绍
  • winXP系统还能用吗
  • freebsd 升级
  • win7怎么添加自启动程序
  • win10预览版和正式版
  • awk中执行命令
  • win7系统怎么设置屏幕常亮
  • win8鼠标指针不见了
  • Win10系统中怎么将文件夹进行压缩
  • 微信小程序选择地址
  • perl -i -pe
  • jquery选择器的使用
  • jquery获取document对象
  • android的图片文件保存在工程的哪个文件夹
  • bootstrap入门
  • javascript数组操作方法
  • 黑龙江电子税务局
  • 法人实名采集必须去现场吗
  • 上海地税定额发票在哪开
  • 北京国税查询发票真伪查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设