前端文件下载
这里写自定义目录标题
- 前端文件下载方法
- 使用a标签
- 使用iframe标签
- 二进制流
前端文件下载方法
使用a标签
/*** 文件下载方法 使用a标签* 存在浏览器下载时,太快的话,会取消上次的下载请求* @param {*} href* @param {*} filename*/
export function downloadFile(href, filename) {if (href) {let a = document.createElement('a');// 指定下载的文件名filename && (a.download = filename);a.href = href; // URL对象const id = 'download' + Math.random();a.id = id;document.body.appendChild(a);a.click(); // 模拟点击URL.revokeObjectURL(a.href); // 释放URL 对象// document.body.removeChild(a);document.getElementById(id).remove();}
}
使用iframe标签
/*** 文件下载方法 使用iframe* 可解决浏览器下载时,太快的话,会取消上次的下载请求* @param {*} url*/
function downloadFileIframe(url) {try {let eleIF = document.createElement('iframe');eleIF.src = url;eleIF.style.display = 'none';document.body.appendChild(eleIF);//防止下载2次setTimeout(function () {document.body.removeChild(eleIF);}, 1000);} catch (e) {console.log(e);}
}
二进制流
将接口完全请求回来的二进制流,在浏览器侧转换成文件下载。这种方案,如果下载的文件特别大的情况会导致浏览器内存特别大,不建议这种方案。
// 将url转成blob地址
fetch(url).then(res => res.blob()).then(blob => {const a = document.createElement('a');// 将链接地址字符内容转变成blob地址a.href = URL.createObjectURL(blob);a.download = filename; // 下载文件的名字document.body.appendChild(a);a.click();// 下载完成后 清除占用的缓存资源window.URL.revokeObjectURL(a.href);document.body.removeChild(a);});
参考文章:
通过动态创建a标签,循环批量下载文件所遇到的问题记录
相关文章:
前端文件下载
这里写自定义目录标题 前端文件下载方法使用a标签使用iframe标签二进制流 前端文件下载方法 使用a标签 /*** 文件下载方法 使用a标签* 存在浏览器下载时,太快的话,会取消上次的下载请求* param {*} href* param {*} filename*/ export function downlo…...
前端成长之路:HTML(3)
在HTML中,有列表标签。列表最大的特点是整齐、简洁、有序,用列表进行布局会更加自由方便。根据使用的情景不同,可以将列表分为三大类:无序列表、有序列表和自定义列表。 无序列表 在HTML中使用<ul>标签定义一个无序列表&a…...
无人机自动机库的功能与作用!
一、无人机自动机库的功能 智能停放与管理 无人机自动机库为无人机提供了一个安全、可靠的停放环境。通过先进的感知技术和安全防护措施,它能够实时监测周围环境,确保无人机免受恶劣天气或潜在风险的侵害。 无人机在机库内可以实现智能停放࿰…...
ubuntu 新建脚本shell并增加图标 双击应用实现python运行
1.使用nano创建shell脚本文件 需要在终端窗口中输入“nano”以打开文本编辑器。 nano 在创建脚本文件前,我们要了解脚本文件是如何运行的: 直接运行:直接在终端直接输入需要运行的脚本文件名称,系统或用缺省版本的shell运行脚…...
ANR 分析SOP
遇到ANR问题不要慌,大部分情况下可能是系统or测试手段问题,我们按照如下关键字排查定位 文章目录 1 是否是 heapdump 导致?1.1 dump开始1.2 dump结束 1 是否是 heapdump 导致? 使用 hprof: heap dump 关键词过滤,在d…...
COLA学习之环境搭建(三)
小伙伴们,你们好,我是老寇,上一节,我们学习了COLA代码规范,继续跟老寇学习COLA环境搭建 首先,打开GitHub,搜索 COLA 请给这个COLA项目点个Star,养成好习惯,然后Fork到自…...
CSS输入框动态伸缩动效
前言 下面我们将会做出如下图输入框样式,并且附上组件代码,有特殊需求的可以自行优化同理,下拉框的话只要把el-input标签修改掉即可 MyInput组件 <template><div class"my-input" click.stop"showInput !showInput…...
hbuilder 安卓app手机调试中基座如何设置
app端使用基座 手机在线预览功能 1.点击运行 2.点击运行到手机或者模拟器 3.制作自定义调试基座 4.先生成证书【可以看我上一篇文档写的有】,点击打包 5.打包出android自定义调试基座【android_debug.apk】,【就跟app打包一样需要等个几分钟】 6.点击运行到手…...
探索视觉与语言模型的可扩展性
✨✨ 欢迎大家来访Srlua的博文(づ ̄3 ̄)づ╭❤~✨✨ 🌟🌟 欢迎各位亲爱的读者,感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢,在这里我会分享我的知识和经验。&am…...
sock_recvmsg函数
sock_recvmsg 是一个在 Linux 内核中用于处理接收网络数据的函数。它通常与套接字 (socket) 操作相关,特别是在网络协议栈中用于处理从网络中接收到的数据。这个函数是内核的一部分,提供了一种机制把接收到的数据从网络协议栈转移到用户空间,或者在内核内进一步处理。 以下是…...
HCIA笔记8--DHCP、Telnet协议
1. DHCP介绍 对于主机的网络进行手动配置,在小规模的网络中还是可以运作的,但大规模网络是无力应对的。因此就有了DHCP协议来自动管理主机网络的配置。 DHCP(Dynamic Host Configuration Protocol): 动态主机配置协议,主要需要配置的参数有…...
Scala的单例对象
在Scala中,单例对象是一种特殊的类,它只能有一个实例,并且这个实例在需要时会自动创建。单例对象在Scala中通过object关键字来定义,它类似于Java中的静态成员和方法,但更加灵活和强大。 定义单例对象 以下是定义一个…...
【笔记】分布式任务调度平台XXL-JOB
这篇笔记主要记录以下内容: (1)第一次启动xxl-job的过程 (2)模块、文件、数据库(表和字段)的作用 (3)极少的源码解读(XxlJobConfig) 有点像实…...
PDFMathTranslate,PDF多语言翻译,批量处理,学术论文,双语对照(WIN/MAC)
分享一个非常实用的PDF文档翻译项目——PDFMathTranslate。作为一个经常逛GitHub的开发者,我总喜欢翻看各种项目附带的论文,虽然大多时候是瞎研究,但却乐在其中。该项目能够完美保留公式、图表、目录和注释,对于需要阅读外文文献的…...
zerotier实现内网穿透(访问内网服务器)
moo 内网穿透工具 实用工具:zerotier 目录 内网穿透工具 Windows下zerotier安装 ubuntu系统下的zerotier安装 使用moon加速 Windows下zerotier安装 有了网络之后,会给你一个网络id,这个网络id是非常重要的,其它设备要加入…...
Formality:set_svf命令
相关阅读 Formalityhttps://blog.csdn.net/weixin_45791458/category_12841971.html?spm1001.2014.3001.5482 svf文件的全称是Setup Verification for Formality,即Design Compiler提供给Formality的设置验证文件,它的作用是为Formality的指导模式(Gui…...
IDEA报错:无效的源发行版、无效的目标发行版
1. 无效的源发行版 创建项目的时候,会遇见这个报错,原因就是编译的JDK版本与发布版本不一致。 解决方法: 1.1. 找到问题所在地 英文:File -> Project Structure ->Project Settings 中文:文件->项目结构 …...
#渗透测试#红蓝对抗#SRC漏洞挖掘# Yakit插件使用及编写01
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
Scala中求斐波那契数列的第n项
求斐波那契数列的第n项 问题:求 斐波那契数列的第n项 记: 0 1 1 2 3 5 8 13 21 34 55 ... 从第3项开始 f(n) f(n-1) f(n-2) 1.基本情况(直接能求的):f(0) 0,f(1) 1 2.递归情况(大事化小,自己…...
ORACLE修改序列值为表内某字段(主键)最大值
ORACLE修改序列值为表内某字段(主键)最大值 想修改序列值,网上基本的都是自己看要加到多少,然后要么调步长,要么删了重建。 想直接用declare使用标量然后调,但是逻辑里面不能有DDL语句。 不过最后解决了 直…...
OpenCore Legacy Patcher深度指南:让老旧Mac焕发新生的完整实战手册
OpenCore Legacy Patcher深度指南:让老旧Mac焕发新生的完整实战手册 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台被苹果官方"…...
终极指南:3分钟免费完成OFD转PDF,彻底解决电子发票打印难题
终极指南:3分钟免费完成OFD转PDF,彻底解决电子发票打印难题 【免费下载链接】Ofd2Pdf Convert OFD files to PDF files. 项目地址: https://gitcode.com/gh_mirrors/ofd/Ofd2Pdf 你是否曾因收到OFD格式的电子发票而无法在手机或普通电脑上打开&am…...
利用Taotoken的OpenAI兼容协议快速迁移现有Node点js应用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 利用Taotoken的OpenAI兼容协议快速迁移现有Node.js应用 对于已经基于OpenAI官方Node.js SDK构建了应用或服务的团队,当…...
告别手动矩阵运算:Eigen库在Ubuntu 22.04下的安装、CMake配置与高效使用避坑指南
告别手动矩阵运算:Eigen库在Ubuntu 22.04下的安装、CMake配置与高效使用避坑指南 在科学计算和算法开发领域,矩阵运算如同空气般无处不在。从计算机视觉中的图像变换到机器人学中的运动控制,从金融工程的风险评估到量子计算的模拟仿真&#x…...
AI写教材工具推荐:低查重保障,高效生成专业教材不是梦!
教材编写与AI工具助力 教材的初稿终于完成,但修改与优化的阶段真是令人感到“折磨”。在仔细阅读整篇内容时,发现逻辑上的漏洞和知识点的错误,需要投入大量的时间去修复。更何况调整一个章节的结构时,可能会涉及到后续多个部分&a…...
告别延时函数!用STM32F103的TIM3 PWM精准驱动WS2812灯带(附完整代码)
STM32F103精准驱动WS2812灯带:PWM方案全解析与实战代码 在嵌入式LED控制领域,WS2812智能灯带因其级联控制、色彩丰富的特性广受欢迎。然而许多开发者在使用STM32驱动时,常陷入延时函数精度不足的困境——灯光闪烁、颜色失真、CPU占用率飙升等…...
告别漫长等待:用Anaconda一行命令搞定XGBoost-GPU版安装(Windows/Linux通用)
告别漫长等待:用Anaconda一行命令搞定XGBoost-GPU版安装(Windows/Linux通用) 在机器学习领域,XGBoost因其出色的性能和广泛的应用场景而备受推崇。然而,当面对大规模数据集时,传统的CPU计算往往显得力不从心…...
NS-USBLoader完整指南:Switch文件传输、RCM注入和文件管理的终极解决方案
NS-USBLoader完整指南:Switch文件传输、RCM注入和文件管理的终极解决方案 【免费下载链接】ns-usbloader Awoo Installer and GoldLeaf uploader of the NSPs (and other files), RCM payload injector, application for split/merge files. 项目地址: https://gi…...
抖音内容高效获取技术方案:基于douyin-downloader的分布式下载架构实践
抖音内容高效获取技术方案:基于douyin-downloader的分布式下载架构实践 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browse…...
告别Flutter构建卡顿:从‘gradle assembleDebug’阻塞到秒级编译的实战调优
1. 为什么你的Flutter项目卡在gradle assembleDebug? 每次新建Flutter项目时,最让人崩溃的莫过于看着"Running gradle assembleDebug"这个提示一直转圈圈。我刚开始用Flutter时也经常遇到这个问题,有时候一等就是半小时,…...
