位置: IT常识 - 正文

vue 中从后端获取到文件的 url 地址,前端根据 url 地址下载文件(vue怎么拿到后端数据)

编辑:rootadmin
vue 中从后端获取到文件的 url 地址,前端根据 url 地址下载文件 vue 之从后端获取到文件的 url 地址,前端根据 url 地址文件下载前言一、实现思路二、具体实现1.完整代码2.代码分析2.1 通过 fetch 将 url 地址转换为 blob 对象2.2 通过 URL.createObjectUrl() 将 blob 对象生成 url 地址2.3 创建 `<a>` 标签元素,将该元素放到页面当中,并通过点击事件来实现下载功能总结前言

推荐整理分享vue 中从后端获取到文件的 url 地址,前端根据 url 地址下载文件(vue怎么拿到后端数据),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue怎么获取后端数据,vue的后端,vue的后端,vue的后端,vue的后端,vue从后端获取数据,vue从后端获取数据,vue获取后端写入的cookie,内容如对您有帮助,希望把文章链接给更多的朋友!

项目用的是 vben admin 框架,用的是 vue3 + TS 项目需求数据导出功能,前端需要实现文件下载功能 后端返回的是文件的 url 地址 (本项目中返回的是阿里云 oss 的文件地址)

一、实现思路

从后端得到的是一个 url 地址,先通过 fetch api 请求这个 url 地址并转换成 blob 对象,通过 URL.createObjectUrl() 将 blob 对象生成 url 地址,绑定到 <a > 标签 的 href 属性上面,结合 download 来实现点击 <a > 标签下载文件

二、具体实现1.完整代码

代码如下:

function exportData() { let data = getForm().getFieldsValue(); exportTowerHistoryToExcel({ deviceId, createTime: data.startTime }).then((url) => { downLoadFile(url); }); }function downLoadFile (url){ let fileName = url.slice(url.lastIndexOf('/') + 1); // 这里是通过从后端获取到的 url 地址中截出来原本的文件名 fetch(url) .then((res) => res.blob()) .then((blob) => { const link = document.createElement('a'); link.href = URL.createObjectURL(blob); // 下载文件的名称及文件类型后缀 link.download = fileName; document.body.appendChild(link); link.click(); //在资源下载完成后 清除 占用的缓存资源 window.URL.revokeObjectURL(link.href); document.body.removeChild(link); });}2.代码分析2.1 通过 fetch 将 url 地址转换为 blob 对象

以下图片来自w3cschool文档 fetch_api

分析vue 中从后端获取到文件的 url 地址,前端根据 url 地址下载文件(vue怎么拿到后端数据)

res.blob() 的返回值是什么 从文档中我们知道res.blob() 返回的并不是一个 blob 对象,而是一个 Promise,继续 .then 获取到的才是 blob 对象

res.blob() 到底做了什么 每调用一次 res.blob() 都会执行 consume budy 的动作 执行流程大概是这个样子 : 获取字节流的读取器 --> 通过读取器来读取到所有的数据 --> 将数据包装成 blob 对象并返回

2.2 通过 URL.createObjectUrl() 将 blob 对象生成 url 地址

以下图片来自MDN文档 URL.createObjectURL()

分析

URL.createObjURL() 做了什么 我们在调用 URL.createObjURL() 的时候传递的参数是一个 blob 对象,每次调用 URL.createObjURL() 的时候,都会创建一个新的 URL 对象 注意 : 即使是用同一个 blob 对象 , 每次调用 URL.createObjURL() 都会生成不同的 URL 对象

生成的的 URL 对象什么时候会被释放 浏览器在 docoment 卸载的时候,会自动释放 为了获得最佳性能和内存使用状况,应当在不需要使用这些 URL 对象的安全的实际,主动释放掉他们

怎么释放生成的的 URL 对象 通过调用 URL.removeObjectURL(需要释放的URL ) 可以来释放生成的 URL 对象

2.3 创建 <a> 标签元素,将该元素放到页面当中,并通过点击事件来实现下载功能<a href="xxxxx"><a href="xxxxx" download="xxxx">

href:文件的绝对/相对地址 download: 文件名(可省略,省略后浏览器自动识别源文件名 , 但是有可能导致自动识别源文件名的时候没有文件后缀,导致文件没有格式)

const link = document.createElement('a'); link.href = URL.createObjectURL(blob); // 下载文件的名称及文件类型后缀 link.download = fileName; // 这里 download 可以不写 document.body.appendChild(link); link.click();总结

其实找到这个解决方案的时候直接拿来用挺顺利的,但是一开始并不明白它是怎么工作的,甚至每行都没太明白它为什么这么做,在整理下来的过程中,反而理解了一些东西,与君共勉~

本文链接地址:https://www.jiuchutong.com/zhishi/283921.html 转载请保留说明!

上一篇:压缩gltf/glb模型踩坑与解决 three.js DRACOLoader(压缩模制)

下一篇:获取街道、镇级的地图geoJson数据方法,使用echarts绘制出街道、镇级的地图区域画面(中山市为例)(当地街道)

  • 企业如何利用微信营销做强的,未来微信营销推广效应(企业如何利用微博和微信营销)

    企业如何利用微信营销做强的,未来微信营销推广效应(企业如何利用微博和微信营销)

  • 华为nova9是什么处理器(华为nova9是什么充电口)

    华为nova9是什么处理器(华为nova9是什么充电口)

  • 微信按住说话需要设置吗(微信按住说话需要流量吗)

    微信按住说话需要设置吗(微信按住说话需要流量吗)

  • 华为p40pro支持红外线的吗(华为p40pro与mate30pro哪个好)

    华为p40pro支持红外线的吗(华为p40pro与mate30pro哪个好)

  • 苹果11分屏多窗口的方法(苹果11屏幕分身)

    苹果11分屏多窗口的方法(苹果11屏幕分身)

  • 华为nova5和荣耀20区别(华为nova5和荣耀20i哪个好)

    华为nova5和荣耀20区别(华为nova5和荣耀20i哪个好)

  • iphone原装充电头发烫(iphone原装充电头多少钱)

    iphone原装充电头发烫(iphone原装充电头多少钱)

  • 手机静态ip地址怎么填写(手机静态ip地址怎么获取)

    手机静态ip地址怎么填写(手机静态ip地址怎么获取)

  • 微星笔记本检测不到摄像头(微星笔记本检测单多久开出来)

    微星笔记本检测不到摄像头(微星笔记本检测单多久开出来)

  • intelcore2duo的mac是哪一年

    intelcore2duo的mac是哪一年

  • qq改了密码后为什么登录不了了(qq改过密码后还是老是出现异常怎么办)

    qq改了密码后为什么登录不了了(qq改过密码后还是老是出现异常怎么办)

  • 荣耀8青春版录屏没了(荣耀8青春版录屏没声音)

    荣耀8青春版录屏没了(荣耀8青春版录屏没声音)

  • 手机导航老是显示信号弱是怎么回事(手机导航老是显示位于室内怎么办)

    手机导航老是显示信号弱是怎么回事(手机导航老是显示位于室内怎么办)

  • dts解码是什么意思(什么叫dts解码)

    dts解码是什么意思(什么叫dts解码)

  • 苹果ipad屏幕点不动怎么办(苹果ipad屏幕点不动无法强制关机)

    苹果ipad屏幕点不动怎么办(苹果ipad屏幕点不动无法强制关机)

  • vivoz3水滴屏怎么截图(vivoz3i水滴屏怎么隐藏)

    vivoz3水滴屏怎么截图(vivoz3i水滴屏怎么隐藏)

  • word怎么调整页面大小(word怎么调整页边距)

    word怎么调整页面大小(word怎么调整页边距)

  • 苹果11pro max怎么关机(苹果11promax怎么样 优点和缺点)

    苹果11pro max怎么关机(苹果11promax怎么样 优点和缺点)

  • 支付宝从哪里邀请好友(支付宝在哪邀请好友)

    支付宝从哪里邀请好友(支付宝在哪邀请好友)

  • 微信数字证书有坏处吗(微信数字证书有必要装么)

    微信数字证书有坏处吗(微信数字证书有必要装么)

  • 云闪付能在淘宝支付么(云闪付在淘宝用怎么减优惠)

    云闪付能在淘宝支付么(云闪付在淘宝用怎么减优惠)

  • p30 pro有没有结构光(华为p30pro有几种截屏方式)

    p30 pro有没有结构光(华为p30pro有几种截屏方式)

  • 荣耀20i的返回键在哪(荣耀20i设置返回键)

    荣耀20i的返回键在哪(荣耀20i设置返回键)

  • 闲鱼删除的宝贝怎么恢复(闲鱼删除的宝贝怎么恢复到个人主页)

    闲鱼删除的宝贝怎么恢复(闲鱼删除的宝贝怎么恢复到个人主页)

  • 快手淘口令怎么设置(快手小店怎么弄淘口令)

    快手淘口令怎么设置(快手小店怎么弄淘口令)

  • 网易考拉怎么入驻(网易考拉怎么变成考拉海购)

    网易考拉怎么入驻(网易考拉怎么变成考拉海购)

  • 退税收入如何做账
  • 核定征收企业所得税暂行办法
  • 节税是什么意思
  • 初装费包括什么
  • 什么情况才能开专票
  • 注册资本印花税怎么交?什么时候交?
  • 商业承兑汇票未到期贴现
  • 金融资产减值准备可以转回吗
  • 房产税当月计提额怎么算
  • 救灾捐赠会计分录
  • 简易计税收入会计分录
  • 财产租赁个人所得税
  • 法人资本个人资本
  • 失业社保补助金领取条件
  • 应收账款零头没有收到如何账务处理
  • 汇算清缴前未取得发票账务处理
  • 品种法在制造企业中的运用
  • 个体工商户转为企业要交税吗
  • 获赠或继承来的房屋以后再转让
  • 商业健康保险个人所得税扣除
  • 纳税人如何办理纳税申报
  • 资产负债率怎么计算
  • 小规模核定征收怎么交税
  • 补提上个月折旧会计分录
  • 建账实收资本怎么处理
  • 一次性收取的租金怎么纳税
  • 企业购买二手车需要缴纳哪些税
  • win10桌面窗口管理器gpu占用高
  • 销售利润率的计算公式Excel
  • qbupdate.exe - qbupdate是什么进程 有什么作用
  • 如何配置无线路由器参数
  • 被收购企业会提出什么条件
  • PHP:stream_socket_get_name()的用法_Stream函数
  • jmcacdefg什么意思
  • 非货币性资产交换补价大于25%的会计处理
  • 缴纳个税时怎么做分录
  • 今日立冬祝福语大全
  • 马耳他共和国瓦莱塔福利
  • php的!
  • 留购价计入什么费
  • 帝国cms8.0
  • 将织梦dedecms转换到wordpress
  • 房产税和城镇土地使用税需要计提吗
  • 税务机关代开的增值税发票要加盖发票专用章吗?
  • 合伙企业所得税征收方式
  • 财务会计和预算会计金额可以不等吗
  • 本年利润的会计分录怎么做
  • 企业转让固定资产发生的费用可扣除吗
  • 采购商品未入库已经付款会计分录
  • 出口未申报退税罚款多少
  • 汽车租赁的会计处理
  • 票据到期无力支付怎么办
  • 员工团体意外保险受益人是谁
  • 出口货物退货的原因
  • 经营性应付项目减少对经营活动现金
  • 研发支出费用化支出结转到哪个科目
  • mysql replace正则表达式
  • windows自带的几个软件
  • 各种linux
  • Red Hat Enterprise Linux AS release 4 apache+MYsql+PHP的安装和优化
  • 原版windowsxp安装
  • bootcamp不用u盘
  • Windows RT 8.1 Update 3九月发布 届时将加入改进版锁屏
  • win8.1桌面图标消失
  • 体验Win8灵活分屏贴靠功能图文介绍
  • javascript运用
  • python爬取app数据违法吗
  • linux中的ls命令的功能是变换工作目录到目标指定目录
  • Underscore.js 1.3.3 中文注释翻译说明
  • shell 1>&2 2>&1 &>filename重定向的含义和区别
  • js格式化输出数字
  • unity备份工程
  • python字符串的编码规则
  • [置顶]bilinovel
  • 江西电子税务局官网
  • 医院票据怎么查询
  • 税率的分类有哪些
  • 市民服务热线有用吗
  • 房屋增值税和土地增值税
  • 税务总局全国增值税发票查验平台
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设