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

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

  • 政府收回土地补偿款是否缴纳土地增值税
  • 递延所得税资产会计处理全过程
  • 工资薪金税前扣除标准是14%吗
  • 车辆购置税和车船税的区别在哪
  • 无形资产摊销是当月还是下月
  • 企业房产税每年交几次
  • 环保科技属于什么行业类别
  • 忘记先抄税再申报了怎么办
  • 预缴增值税是否要预缴印花税
  • 剩余材料入库的会计分录怎么做?
  • 营改增的会计处理及其对财务的影响
  • 何为独立核算
  • 工会经费用于什么
  • 补计提以前年度增值税
  • 小微企业季度超过30万怎么报增值税
  • 企业注册资金需要拿钱出来吗
  • 增值税进项销项怎么算
  • 小规模纳税人免征增值税怎么记账
  • 开具的增值税专用发票上注明的价款为50万元
  • 外币汇兑差额债券投资计入什么科目?
  • 股票派息后会除权吗
  • 差额征税和差额计税
  • 租赁设备发票备注栏怎么填写
  • 验资报告需要什么材料
  • 备抵法发生坏账分录
  • 实行简易征收
  • mac终端怎么运行命令
  • 发生固定资产了怎么做账
  • win11 分区
  • 企业注销时当月要缴税吗
  • 建筑企业如何预缴企业所得税
  • 光纤布线有什么作用
  • 在window系统中哪些用户可以查看日志
  • oeloader.exe - oeloader是什么进程 有什么用
  • php写一个简单的单例模式
  • laravel框架中文手册
  • 购买股票的佣金计入
  • 只用vue可以做网站不?
  • 缺陷修饰
  • vue笔记大全
  • 社会团体收取的会费是否缴纳企业所得税
  • 增值税专用发票怎么开
  • 外币应收账款汇兑损失计入
  • 结转成本费用
  • 有外币业务需不需要交税
  • 所得税预缴申报表资产总额怎么填
  • 工资是当月计提当月发放还是当月计提下月发放
  • 完全卸载mysql8.0
  • 红冲的发票能不能取消
  • 财务费用的内容包括哪些
  • 月末进项税大于销项税额怎么结转
  • 什么是汇算清缴?
  • 施工单位名称变更需不需要单独做一个联络函
  • 现金存银行凭证
  • 交易性金融资产包括哪些项目
  • 什么叫误餐费
  • 非正常损失的进项税额转出会计分录
  • 记账凭证的分类标准
  • 会计账簿怎么填写模式
  • 会计的几种折旧类型
  • 如何重设路由器密码怎么办
  • repair.exe是什么软件
  • 神墓凌云
  • mac禁用标志
  • 重装win7系统后桌面没东西
  • 苹果公司joz
  • linux whoami命令详解
  • win10系统注册名修改
  • rhel6.5安装
  • nodejs writestream
  • Unity3D游戏开发基础
  • js深拷贝的三种实现方式
  • Python统计代码
  • 玩转cmd命令
  • python怎么弄中文
  • python 命令
  • HttpClient.execute() 阻塞问题
  • 国家税务总局江西省
  • 煤炭资源税税率是多少啊
  • 虚假纳税申报的法律责任
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设