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

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

  • 全国增值税发票查验平台入口
  • 已知税金及附加怎么算增值税
  • 增值税的计税依据是什么
  • 支付的各项税费现金流量表怎么填
  • 土地使用税返还是否征税
  • 进项票和销项票是什么意思
  • 委托开发票的证明怎么写
  • 银行贷款受托支付后,钱怎么转回来
  • 客运站收到承运方开具增值税专用发票可否抵扣
  • 汇算清缴中研发费用中其他费用可抵扣的比例是多少
  • 企业取得财产转让收入确认时间
  • 收到客户承兑怎么做账
  • 人力资源劳务费发票税率
  • 广告服务怎么做分录
  • 保本型理财产品推荐
  • 以前年度损益调整会计分录
  • 年终奖需要扣除个人所得税吗
  • 债权债务转让税务问题
  • 混业经营试点
  • 报税报错了怎么办?
  • 工程结算收入要交税吗
  • 对外出租设备
  • 银行对账单是否属于会计档案
  • 企业取得的土地使用权应作为固定资产核算
  • 退回工资能退个税吗
  • 初级备考计划表
  • 房屋的折旧年限一般是多少年
  • 国税地税纳税申报
  • 票据贴现业务的风险
  • 什么是应收
  • 如何让自己的网站被百度收录
  • 无法找到脚本文件vbs
  • 点云目标检测数据集
  • 固定资产置换存货的账务处理
  • vue3性能对比
  • 报废车怎么走流程
  • 博登湖下载
  • php动态变量
  • vue2-elm
  • d2loader does not recognize
  • php array_slice 取出数组中的一段序列实例
  • js原型函数
  • 以个人名义和公司名义入股的利弊
  • phpcms程序
  • 税收分类口诀
  • 投资性公司怎么做账
  • 所得税预缴怎么申报
  • 可明确区分的商品什么意思
  • 减免的附加税要申报吗
  • 损益类科目全部科目
  • 其他业务收入怎么申报增值税
  • 出差费计入工资总额吗
  • 包装物范围
  • 银行手续费没有发票
  • 微众银行贷款到私账吗
  • 开了发票就要交税吗?
  • 买断式与回购式
  • 酒店会计做账流程
  • mysql深入解析
  • freebsd使用wifi
  • FreeBSD中使用QUOTA(磁盘配额)来限制用户空间
  • win7安装程序遇到错误0xc0000135
  • ubuntu18.04没有声音
  • gh-files是什么
  • win10version最新版本
  • crontab环境变量不生效
  • Win10 Mobile 10586.71或时最适合WP8.1升级的Win10的版本
  • js unload
  • vue中的event
  • js基于什么
  • python3 django教程
  • [置顶]游戏名 TentacleLocker
  • jquery教程chm
  • Python Requests安装与简单运用
  • 苗木税收政策
  • 贵州电子税务局怎么登录
  • 北京通个人认证
  • 个体户定额纳税
  • 小企业会计准则的印花税计入什么
  • 煤矸石占地需要哪些手续
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设