当前位置: 首页 > news >正文

JS下载链接的两种方式

1、window.open()

弹出新窗口下载,需要用户进行交互之后触发,否则会被拦截,Safari始终会拦截弹窗

2、a标签下载

   不会触发弹窗,更安全

let a = document.createElement('a')
a.href = '下载链接';
a.download = '文件名称';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);

3、直接JS读取文件流

此方式适用于无法直接获得下载链接,后端直接返回文件流的情况

axios.get(durl,{ responseType: 'blob' }).then(rstream => {let name = '文件名';let b = new Blob([rstream.data]);let URL = window.URL ? window.URL : window.webkitURL;let url = URL.createObjectURL(b);let link = document.createElement('a');link.href = url;link.download = name;document.body.appendChild(link);link.click();URL.revokeObjectURL(url)document.body.removeChild(link)
}).catch(e=>{console.log(e);alert('下载失败!请重试!')
})

http://www.lryc.cn/news/176249.html

相关文章:

  • 手把手教你实现:将后端SpringBoot项目部署到华为云服务器上
  • 【红队攻防】从零开始的木马免杀到上线
  • Linux命令行操作:使用“more“命令进行分页显示
  • CentOS下安装MySQL 8.1及备份配置
  • 【RabbitMQ实战】06 3分钟部署一个RabbitMQ集群
  • (c语言)整形提升
  • 上传文件报错:The temporary upload location [/tmp/tomcat/xxx] is not valid
  • 直线模组的品牌有哪些?
  • 零基础学习ESP8266
  • 基于PYQT5的GUI开发系列教程【二】框架安装和基础环境配置
  • pg数据库操作,insert(sql)插入一条数据后获返回当前插入数据的id --chatGPT
  • 【数据结构-树】哈夫曼树
  • HarmonyOS 4.0 实况窗上线!支付宝实现医疗场景智能提醒
  • 【响应式布局】
  • Spring面试题23:Spring支持哪些事务管理类型?Spring框架的事务管理有哪些优点?你更倾向用哪种事务管理类型?
  • Leetcode—— LCR 122. 路径加密
  • 缓冲区溢出漏洞分析
  • 【高阶数据结构】红黑树(C++实现)
  • 算力百川汇蓝海,商海荡漾绘宏图
  • ORACLE 内存结构之系统全局区(SGA)
  • 主要文档分享网站一览
  • CPU访问一个虚拟地址的整体流程
  • UE5 虚幻引擎 如何使用构造脚本(Construction Script)? 构造脚本的奥秘!
  • Mysql高级——数据库设计规范(2)
  • c++-string
  • KNN-K近邻算法(K-Nearest Neighbors)
  • ChatGPT:理解HTTP请求数据格式:JSON、x-www-form-urlencoded和form-data
  • 字符集、IO流(一)
  • 相乘(蓝桥杯)
  • [AFCTF 2018]你能看出这是什么加密么