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

浏览器 实现文件下载 完成回调 兼容ie11

首先保证 改文件资源能够通过get请求或者 post请求拿到,基于此基础上我们可以实现得知下载完成后的回调 代码如下

const getFileAndCallback = (url, callback) => {//定义执行作用域const that = this;//首先 初始化一个原生ajax对象const xhr = new XMLHttpRequest();//建立xhr请求xhr.open("GET", url, true);//定义xhr传输格式未blobxhr.responseType = "blob";//xhr回调函数xhr.onload = function(){//接口成功响应if (this.status === 200){const blob = this.response;//定义fileReader对象const fileReader = new FileReader();//使用fileReader原生api 读取xhr 存入fileReader对象fileReader.readAsDataUrl(blob);//监听fileReader的加载回调fileReader.onload = async function(e){//兼容ie11的写法//ie 11对文件数据的存储转换api是window.navigator.msSaveBlob(this.response, "文件名/fileName") 或者  window.navigator.msSaveOrOpenBlob(this.response, "文件名/ fileName");if (window.navigator.msSaveOrOpenBlob){try {window.navigator.msSaveOrOpenBlob(this.response, ""文件名/fileName"")}catch(e){//日志记录解析失败的情况 理论上不会出现}}else{//ie11意外的文件下载用的是a标签downloadlet a = document.createElement('a');a.download = "文件名/fileName";a.href = e.target.result;a.click();}};//此时已经下载完成 执行回调callback();}}}

//实现方法如上

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

相关文章:

  • 鸿蒙Harmony应用开发—ArkTS声明式开发(容器组件:Grid)
  • Docker使用(四)Docker常见问题分析和解决收集整理
  • 通过spring boot/redis/aspect 防止表单重复提交【防抖】
  • C++ 作业 24/3/14
  • 新品牌推广怎么做?百度百科创建是第一站
  • k8s系列-kubectl 命令快速参考
  • 微信小程序--开启下拉刷新页面
  • 【研发日记】Matlab/Simulink技能解锁(五)——Simulink布线技巧
  • FPGA高端项目:FPGA基于GS2971+GS2972架构的SDI视频收发+OSD动态字符叠加,提供1套工程源码和技术支持
  • 面向对象编程第二式:继承 (Java篇)
  • 2024最新小狐狸AI 免授权源码
  • 5.69 BCC工具之runqlen.py解读
  • 什么软件可以改变ip地址
  • C语言-strncmp strncat strncpy长度受限制的字符串函数
  • ROS Kinetic通信编程:话题、服务、动作编程
  • 还原wps纯粹的编辑功能
  • 【烹饪】清炒菠菜的学习笔记
  • AcWing 4964.子矩阵
  • 代码随想录算法训练营第day20|530.二叉搜索树的最小绝对差 、 501.二叉搜索树中的众数 、236. 二叉树的最近公共祖先
  • Hystrix的原理及应用:构建微服务容错体系的利器(二)
  • 【nuget】如何移动 nuget 缓存文件夹
  • H266开源视频编码器VVENC现状
  • unity webgl怎么获取当前页面网址
  • 深度学习神经网络训练环境配置以及演示
  • [嵌入式AI从0开始到入土]16_ffmpeg_ascend编译安装及性能测试
  • HTML5:七天学会基础动画网页11
  • 考虑开发容器的 6 个理由
  • Python基础入门 --- 1-2.字面量
  • 华为云计算hcie认证考什么?华为hciie认证好考吗
  • redis spring cache