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

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

  • 为什么快手更新了看不了私信(为什么快手更新越来越像抖音)

    为什么快手更新了看不了私信(为什么快手更新越来越像抖音)

  • 苹果手机显示面容ID不可用是什么原因(苹果手机显示面容不可用是什么意思)

    苹果手机显示面容ID不可用是什么原因(苹果手机显示面容不可用是什么意思)

  • oppo官方系统升级(oppo官方更新系统)

    oppo官方系统升级(oppo官方更新系统)

  • 火狐浏览器清除缓存在哪里(火狐浏览器清除账号密码)

    火狐浏览器清除缓存在哪里(火狐浏览器清除账号密码)

  • 信息安全技术有哪几种(信息安全技术有哪几种?)

    信息安全技术有哪几种(信息安全技术有哪几种?)

  • 华为p40pro需要贴膜吗(华为p40pro需要贴镜头膜吗)

    华为p40pro需要贴膜吗(华为p40pro需要贴镜头膜吗)

  • 空气开关上的c32是什么意思(空气开关合不上)

    空气开关上的c32是什么意思(空气开关合不上)

  • iphone电池健康多少可以免费换(iphone电池健康多少建议更换)

    iphone电池健康多少可以免费换(iphone电池健康多少建议更换)

  • 最小生成树和最短路径的区别(最小生成树和最小支撑树)

    最小生成树和最短路径的区别(最小生成树和最小支撑树)

  • OPPO手机的TeeService是什么(OPPO手机的空调遥控器在哪里)

    OPPO手机的TeeService是什么(OPPO手机的空调遥控器在哪里)

  • 华为手机克隆用数据流量吗(华为手机克隆用不了怎么办)

    华为手机克隆用数据流量吗(华为手机克隆用不了怎么办)

  • vivox30有nfc吗(vivox30有NFC吗)

    vivox30有nfc吗(vivox30有NFC吗)

  • 电话技术支持有什么用(电话技术支持有效期和购买时期不对)

    电话技术支持有什么用(电话技术支持有效期和购买时期不对)

  • word编号怎么设置(word编号怎么设置字体)

    word编号怎么设置(word编号怎么设置字体)

  • 手机支付宝红包没有余额宝红包怎么用(手机支付宝红包怎么找)

    手机支付宝红包没有余额宝红包怎么用(手机支付宝红包怎么找)

  • oppoa57怎么添加插件(oppoa57怎么添加桌面小组件)

    oppoa57怎么添加插件(oppoa57怎么添加桌面小组件)

  • win10在哪取消远程默认网关(win10怎么取消远程控制)

    win10在哪取消远程默认网关(win10怎么取消远程控制)

  • 开启ap隔离有什么用(ap隔离关闭怎么弄)

    开启ap隔离有什么用(ap隔离关闭怎么弄)

  • 三星s10有啥特殊功能(三星s10特色)

    三星s10有啥特殊功能(三星s10特色)

  • iphonex怎么开nfc(iphoneX怎么开手电筒)

    iphonex怎么开nfc(iphoneX怎么开手电筒)

  • 爱剪辑导出视频无法播放(爱剪辑导出视频不清晰)

    爱剪辑导出视频无法播放(爱剪辑导出视频不清晰)

  • 华为手机休眠设置不了(华为手机休眠设置变灰)

    华为手机休眠设置不了(华为手机休眠设置变灰)

  • 双行合一的排版格式怎么设置(双行合一的排版格式怎么弄)

    双行合一的排版格式怎么设置(双行合一的排版格式怎么弄)

  • 插上U盘电脑无法开机怎么回事(插上U盘电脑无法启动怎么回事)

    插上U盘电脑无法开机怎么回事(插上U盘电脑无法启动怎么回事)

  • Win11上帝模式在哪? Win11开启上帝模式的三种方法(win10 上帝模式)

    Win11上帝模式在哪? Win11开启上帝模式的三种方法(win10 上帝模式)

  • OS X 系统多屏显示隐藏第二个屏幕上的菜单栏(苹果多屏协同win10)

    OS X 系统多屏显示隐藏第二个屏幕上的菜单栏(苹果多屏协同win10)

  • 学习笔记 | 多层感知机(MLP)、Transformer(多层是什么)

    学习笔记 | 多层感知机(MLP)、Transformer(多层是什么)

  • Electron 分享(入门,安装,打包)(electronx)

    Electron 分享(入门,安装,打包)(electronx)

  • 小规模纳税人需要异地预缴吗
  • 国际重复征税解决方法有
  • 全国税务师考试准考证打印
  • 成本核算需要哪些基础工作
  • 小规模增值税减免会计账务处理
  • 固定资产装修费用计入房产税吗
  • 非金融单位贷款利息收入列示什么科目
  • 赠送的商品怎么缴纳增值税
  • 卖胶卷的店
  • 单位缴纳的社保在哪里查询
  • 公司购买的二手车如何计提折旧
  • 建筑工地不按月发工资怎么办
  • 小规模公司退税
  • 影响所得税金额的因素有哪些
  • 增值税附表是自动生成的吗
  • 企业以货币形式取得的收入
  • 法人变更了还用变更发票领用本吗
  • 企业所得税退税会计分录
  • 租金税率9%和5
  • 出口退税需要什么单据
  • 工会年度收入支出表
  • 个人给单位垫付的款怎么做账
  • 一般纳税人是什么发票
  • 无形资产商标设计图片
  • 经销商计提折扣怎么算
  • 土地增值税清算收入如何确定
  • 购买财务软件申请怎么写
  • paytime.exe - paytime是什么进程 有什么用
  • 蟹爪兰的养殖方法和浇水
  • 寿命最短的苹果手机
  • 装修未办理施工许可证怎么处罚
  • php自定义函数的语法格式
  • 公允价值变动损益借贷方向增减
  • php抓取网页图片
  • 浅谈一下新冠的好处
  • pytorch1.9.0
  • php数组的类型有哪些
  • 前端高手进阶
  • vue 动态组件
  • IDEA 2022专业版创建Java Web项目(保姆式小白讲义,强烈建议入手!)
  • 废品损失科目的账户结构
  • 固定资产到期日
  • c语言二级指针详解
  • 帝国cms怎么用
  • 工会经费计提的会计分录
  • 预收账款包括哪些内容具体明细
  • 企业所得税算法例题解析
  • 以前年度损益调整结转到本年利润吗
  • 资产负债表日后事项是什么意思?
  • 库存商品暂估入库是什么意思
  • 销售返利可以税前扣除吗
  • 企业应收账款怎么记账
  • 车船税是什么样子的?
  • 跨年银行回单怎么入账
  • 购买理财计入现金流量表什么科目
  • 工商年报认缴时间过期了怎么办
  • 认缴款和投资款区别
  • 注册资本实缴后钱怎么出来
  • 企业出租商业铺面需要缴纳什么税
  • sql2005定时备份数据库
  • sql转换
  • 发生意外错误无法完成您的请求
  • linux系统的安装与配置
  • centos hosts
  • win8操作系统安装
  • GhostXP_SP3活力版V3.0_系统之家首发
  • OfcPfwSvc.exe - OfcPfwSvc是什么进程 有什么用
  • ipssvc.exe - ipssvc是什么进程 有什么作用
  • windows8.1如何安装
  • win10预览版桌面图标和任务栏不翼而飞怎么办?
  • cocos2dx视频教程
  • lua教程书籍
  • 浏览器如何批量打开网址
  • windows批处理命令大全
  • Node.js中的事件循环是什么样的
  • jQuery Ajax传值到Servlet出现乱码问题的解决方法
  • 安徽残疾人补助过年有多少钱
  • 出口退税期限最长几个月以上
  • 贵州地税网上申报大厅
  • 耕地被占用税怎么交
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设