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

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

  • 苹果手机怎么读取sd卡(苹果手机怎么读取u盘内容)

    苹果手机怎么读取sd卡(苹果手机怎么读取u盘内容)

  • 抖音账号评级会解除吗(抖音账号评级会重复吗)

    抖音账号评级会解除吗(抖音账号评级会重复吗)

  • 用华为手机怎么截视频(用华为手机怎么查找苹果手机的位置)

    用华为手机怎么截视频(用华为手机怎么查找苹果手机的位置)

  • 畅联语音是什么意思(畅联语音是什么情况)

    畅联语音是什么意思(畅联语音是什么情况)

  • 并排显示窗口快捷键(并排显示窗口快捷键用不了)

    并排显示窗口快捷键(并排显示窗口快捷键用不了)

  • 手机wlan已连接不可上网是什么原因(手机WLAN已连接但无法访问互联网)

    手机wlan已连接不可上网是什么原因(手机WLAN已连接但无法访问互联网)

  • 爱奇艺突然没有字幕了(爱奇艺突然没有弹幕开关)

    爱奇艺突然没有字幕了(爱奇艺突然没有弹幕开关)

  • ipad自己乱跳怎么回事(ipad自己跳动怎么回事)

    ipad自己乱跳怎么回事(ipad自己跳动怎么回事)

  • 华为gt手表可以关闭蓝牙吗(华为gt手表可以安装应用吗)

    华为gt手表可以关闭蓝牙吗(华为gt手表可以安装应用吗)

  • 微信注销了还能登录吗(微信注销了还能查到转账记录)

    微信注销了还能登录吗(微信注销了还能查到转账记录)

  • iphone11香港上市时间(苹果手机11系列香港价格)

    iphone11香港上市时间(苹果手机11系列香港价格)

  • 腾讯视频会员能退款吗(腾讯视频会员能投屏吗)

    腾讯视频会员能退款吗(腾讯视频会员能投屏吗)

  • qq闪照怎么设置3秒(QQ闪照怎么设置时间)

    qq闪照怎么设置3秒(QQ闪照怎么设置时间)

  • 携程超级会员自动续费怎么取消(携程超级会员会自动续费吗)

    携程超级会员自动续费怎么取消(携程超级会员会自动续费吗)

  • ppt图片效果在哪里设置(ppt图片效果在哪找)

    ppt图片效果在哪里设置(ppt图片效果在哪找)

  • 手机显示未接通什么意思(手机显示未接来电)

    手机显示未接通什么意思(手机显示未接来电)

  • 开关0和1代表什么(开关上面的0和1)

    开关0和1代表什么(开关上面的0和1)

  • 安卓手机自带应用怎么删除(安卓手机自带应用)

    安卓手机自带应用怎么删除(安卓手机自带应用)

  • vivopay在哪里(vivopay在哪里可以找到)

    vivopay在哪里(vivopay在哪里可以找到)

  • ios12.2适合6s吗(ios12.5苹果6可以用吗)

    ios12.2适合6s吗(ios12.5苹果6可以用吗)

  • iqoo充电口可以插耳机吗(iqoo充电口可以连耳机吗)

    iqoo充电口可以插耳机吗(iqoo充电口可以连耳机吗)

  • 白名单怎么设置(电脑白名单怎么设置)

    白名单怎么设置(电脑白名单怎么设置)

  • cor_al00是什么型号(coral00是什么型号手机)

    cor_al00是什么型号(coral00是什么型号手机)

  • airpods可以空盒充电吗(airpods空盒能连接手机吗)

    airpods可以空盒充电吗(airpods空盒能连接手机吗)

  • 在GPU上运行pytorch程序(指定单/多显卡)(用gpu运行python)

    在GPU上运行pytorch程序(指定单/多显卡)(用gpu运行python)

  • 企业向股东借款个人所得税
  • 季度所得税费用如何计提
  • 劳务公司开出的工程服务费专用发票怎么计费
  • 个体户季报网上怎么报税
  • 货物退回是什么意思
  • 购销合同中印花税怎么计算
  • 港资企业定义
  • 盈余公积的作用与意义
  • 减免税款抵税怎么做分录
  • 单位社保缴费基数怎么确定
  • 特许权使用费计算公式
  • 发生非正常损失的购进货物不准予抵扣的增值税
  • 长期股权投资的交易费用计入哪里
  • 对公付款没有发票
  • 营改增后房地产公司税种及税率
  • 怎样冲减虚开发票的会计分录
  • 增值税税负率税率怎么算
  • 哪些费用税务局可以抵扣
  • 财税2012年第15号文
  • 7月1日起,中药生产企业增值税税率为多少?
  • 每个行业都能赚钱吗
  • 递延收益相关的法律规定
  • 设定提存计划怎么填
  • 建筑施工的会计科目
  • 研发费用进成本吗
  • 上月开的发票本月作废怎么处理
  • 专票私人能开吗?
  • 残疾人保障金工资总额包括社保吗
  • 税金及附加包括个人所得税吗
  • 分户记账
  • 会计上金融资产包括哪些
  • 全员劳动生产率怎么计算出来的
  • PHP:oci_internal_debug()的用法_Oracle函数
  • 建筑行业企业所得税怎么征收
  • linux 速度
  • 未分配收益余额在哪方
  • 如何用wordpress
  • 商业企业营业收入
  • php遍历结果集
  • php开发项目
  • 分公司不能享受所得税优惠
  • 商业企业常用会计科目
  • 车保险费中的车险是什么
  • python中time模块的用法
  • 税务自查报告范文自查报告怎么写
  • php实现上传图片功能
  • 如何解决面颊毛孔粗大
  • phpcms v9搬家不同步怎么办
  • 利息支出是利息费用减利息收入吗
  • 冲销以前年度费用会计分录
  • 电脑填制记账凭证合计数前的符号怎么输入
  • 调减加计抵减额什么意思
  • 资产负债表编制
  • 估价入账的账务处理
  • 以前年度的销售退回能否直接冲减销售收入
  • 房地产企业开发的准备出售的房屋属于投资性房地产吗
  • 工程施工企业外管证怎么办理
  • 公允价值变动损益借贷方向
  • 销项减进项税额
  • 上月其他应付款本月怎么调回来
  • 加计扣除要交企业所得税吗
  • sqlserver数据库建库建表
  • eclipse连接mysql代码
  • MySQL 5.5.x my.cnf参数配置优化详解
  • win7卸载程序找不到软件
  • win10周年版
  • 防火墙监视模式
  • windows8怎么设置锁屏时间
  • linux系统基本操作命令
  • js opendialog
  • expand.grid函数
  • ext.grid.gridpanel
  • js中单例模式
  • 脚本添加crontab
  • unity开发游戏教程
  • javascript获取复选框的值
  • 基层税务所工作现状
  • 怎么在移动官网上复机
  • 关税由谁来承担
  • 厦门市税务局电话
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设