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

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

  • 支付宝银行卡余额查询(支付宝银行卡余额查询手机怎么查)

    支付宝银行卡余额查询(支付宝银行卡余额查询手机怎么查)

  • 美团APP闪购超市在哪里(美团闪购超市是什么)

    美团APP闪购超市在哪里(美团闪购超市是什么)

  • qq浮屏如何取消(qq悬浮怎么关闭)

    qq浮屏如何取消(qq悬浮怎么关闭)

  • 京东怎么选择本地仓(京东怎么选择本地商家)

    京东怎么选择本地仓(京东怎么选择本地商家)

  • 充电宝in一直闪是什么意思(充电宝一直一闪一闪)

    充电宝in一直闪是什么意思(充电宝一直一闪一闪)

  • 微信加人频繁多久解封(微信加人频繁多久恢复)

    微信加人频繁多久解封(微信加人频繁多久恢复)

  • 华为激活日期怎么看(华为新机激活日期)

    华为激活日期怎么看(华为新机激活日期)

  • 手机关机后还会有行程记录吗(手机关机后还会有微信步数吗)

    手机关机后还会有行程记录吗(手机关机后还会有微信步数吗)

  • 拼多多22人想买是什么意思(拼多多几人想买)

    拼多多22人想买是什么意思(拼多多几人想买)

  • 小米10信号不好是怎么回事(国产什么手机信号最好最强)

    小米10信号不好是怎么回事(国产什么手机信号最好最强)

  • 苹果手机裸机都有什么(苹果手机裸机都有哪些)

    苹果手机裸机都有什么(苹果手机裸机都有哪些)

  • 文档怎样做目录(文档怎样做目录查找)

    文档怎样做目录(文档怎样做目录查找)

  • okr是什么(OKR是什么意思的缩写)

    okr是什么(OKR是什么意思的缩写)

  • word文档怎么修改文字(word文档怎么修复)

    word文档怎么修改文字(word文档怎么修复)

  • realme Q充满电要多久(realmeq3充满电要多久)

    realme Q充满电要多久(realmeq3充满电要多久)

  • 苹果11来电闪光灯怎么设置(苹果11来电闪光灯设置了也不闪)

    苹果11来电闪光灯怎么设置(苹果11来电闪光灯设置了也不闪)

  • pr2019怎么加背景音乐(pr添加背景)

    pr2019怎么加背景音乐(pr添加背景)

  • 米家多功能网关怎么用(米家多功能网关电源插座小夜灯)

    米家多功能网关怎么用(米家多功能网关电源插座小夜灯)

  • 微信掷骰子怎么掷到6(微信掷骰子怎么掷到6骰子工具)

    微信掷骰子怎么掷到6(微信掷骰子怎么掷到6骰子工具)

  • 苹果手机分屏功能怎么用(苹果手机分屏功能怎么关闭)

    苹果手机分屏功能怎么用(苹果手机分屏功能怎么关闭)

  • 手机里下载的视频在哪里可以找到(手机内下载的视频)

    手机里下载的视频在哪里可以找到(手机内下载的视频)

  • linux如何删除文件(Linux如何删除文本中的空格)

    linux如何删除文件(Linux如何删除文本中的空格)

  • 微信小程序 - 完美解决 web-view 公众号文章或第三方网站分享转发后,打开提示 “无法打开该页面,不支持打开” 或 “页面不存在”(IOS 苹果系统打开是空白页,安卓系统会有提示)超详细排查(微信小程序完美修真攻略)

    微信小程序 - 完美解决 web-view 公众号文章或第三方网站分享转发后,打开提示 “无法打开该页面,不支持打开” 或 “页面不存在”(IOS 苹果系统打开是空白页,安卓系统会有提示)超详细排查(微信小程序完美修真攻略)

  • 保姆级官方yolov7的训练自己的数据集以及项目部署

    保姆级官方yolov7的训练自己的数据集以及项目部署

  • day11-Servlet01

    day11-Servlet01

  • 超过认证期的发票能用吗
  • 二手车没有发票能过户吗
  • 企业出售不动产的涉税问题
  • 开发票高校是企业还是非企业单位
  • 城建税有没减半
  • 通行费进项抵扣政策
  • 如何区别文化体育业和娱乐业
  • 印花税漏报,税务局怎么罚款
  • 增值税即征即退政策适用范围
  • 异地存款手续费2022最新规定
  • 营改增后房地产开发企业需要交哪些税?
  • 增值税申报收入和企业所得税申报收入
  • 红字发票需要做什么科目
  • 车辆购置税入什么科目?
  • 研发费用加计扣除政策执行指引
  • 国税和地税归哪里管
  • 公司走税,对公司有影响吗
  • 不抵扣的发票怎么导入做账系统
  • 个体户的定额发票怎么领
  • 研发人员奖金的会计分录
  • 公司注销后银行账户怎么注销
  • 给客户打折账务处理
  • 已计提的存货跌价准备确认为净损失吗
  • 企业所得税的计算公式及实例
  • 收到工程发票如何做账
  • 小企业成本核算方法移动加权平均法
  • 手机型号不在鸿蒙系统里
  • 如何整理流水账目
  • 职工食堂的费用可以抵税吗
  • 收到以前年度退税款的会计分录
  • windows10版本2004怎么样
  • PHP:mcrypt_module_is_block_algorithm()的用法_Mcrypt函数
  • php中各种定义变量的值
  • 股权投资差额怎么算
  • 项目辅材计入什么科目
  • 个税申报中是否婚前各自首套贷款
  • 递延所得税资产和负债怎么计算
  • 注册公司时的注册资金
  • vue父子组件传值方法
  • python搭建项目结构
  • 微信支付扫码支付顺序
  • python里面的类
  • 损益类科目增加记借方吗
  • 计提短期借款利息会计分录怎么写
  • 补充医疗保险属于什么
  • layuitablechecked获取选中数据方式
  • 债权债务转让会计分录
  • 免税农产品有哪些类型
  • 进项认证以后如何处理
  • 计提递延所得税资产影响当期利润吗
  • 什么是财产行为税举例
  • 营改增后转让土地使用权怎么交增值税
  • 房地产开发企业分为几个等级
  • 收到去年所得税汇算清缴退税账务处理
  • 小微企业注册流程及注意事项
  • 购买农产品进行销售要交税吗
  • 应收应付对冲的分录
  • 索引的基本原则
  • 批量更新数据库最多多少条
  • win8系统打不开
  • w10预览版新功能
  • Win7笔记本怎么连接wifi
  • xp系统如何加速
  • 怎么自己制作diy
  • windows8更新不了怎么办
  • windows8无线网络
  • androidstudio调用so文件
  • 解读css发展历史简述
  • python 多线程调用
  • python返回结果
  • 在windows 10中
  • 等待窗口
  • AndroidStudio中aar文件引用
  • python的入门教程
  • 深圳地税电子税务局
  • 企业欠税交不起怎么办
  • 关税由谁来承担
  • 个体户 零申报
  • 开健身会所国家有补贴吗
  • 滨州市望海花园北侧规划
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设