前端文件下载

ops/2024/12/12 12:52:18/

这里写自定义目录标题

  • 前端文件下载方法
    • 使用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标签,循环批量下载文件所遇到的问题记录


http://www.ppmy.cn/ops/141245.html

相关文章

Github 2024-12-11C开源项目日报Top10

根据Github Trendings的统计,今日(2024-12-11统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量C项目10Netdata: 开源实时监控平台 创建周期:4020 天开发语言:C协议类型:GNU General Public License v3.0Star数量:68982 个Fork数量:577…

力扣第95题 不同的二叉搜索树 II

不同的二叉搜索树 II 一级目录二级目录三级目录 力扣第95题 - 不同的二叉搜索树 II题目描述思路分析1. 二叉搜索树的性质2. 递归构造树3. 动态规划优化(可选) 递归详细递归函数定义参数含义返回值 递归的逻辑递归过程的可视化第一次递归(范围…

SpringMvc完整知识点一

SpringMVC概述 定义 SpringMVC是一种基于Java实现MVC设计模型的轻量级Web框架 MVC设计模型:即将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。这种分离…

文字稿 | MatrixOne2.0.0:AI向量与高可用能力的重磅升级MatrixOne 2.0.0 新特性解读

MatrixOne 2.0.0 是一款 AI 驱动的云原生超融合数据库,采用了存算分离的架构,全面优化了云上资源利用效率。 MatrixOne兼容 MySQL 协议和语法,具备支持混合负载场景的能力,并结合向量数据类型、全文检索等特性,为生成式…

如何在Centos7中设置tomcat开机自启动

Tomcat已在centos中安装好,并且已配置好jdk的环境变量,但是Tomcat一直启动不起来。之前按照部署文档用的chkconfig进行Tomcat自启动配置,但是配置失败。现按照以下方法进行配置,配置成功。 1.配置tomcat8开机启动 在/usr/lib/sys…

(一)- DRM架构

一,DRM简介 linux内核中包含两类图形显示设备驱动框架: FB设备:Framebuffer图形显示框架; DRM:直接渲染管理器(Direct Rendering Manager),是linux目前主流的图形显示框架; 1&am…

Hadoop生态圈框架部署(九-2)- Hive HA(高可用)部署

文章目录 前言一、Hive部署(手动部署)下载Hive1. 上传安装包2. 解压Hive安装包2.1 解压2.2 重命名2.3 解决冲突2.3.1 解决guava冲突2.3.2 解决SLF4J冲突 3. 配置Hive3.1 配置Hive环境变量3.2 修改 hive-site.xml 配置文件3.3 配置MySQL驱动包3.3.1 下在M…

自动化测试用例编写

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快 自动化测试是使用专门的软件工具来验证软件解决方案,这通常涉及自动化功能作为测试过程的一部分。测试自动化最常见的对象是。 测试管理和缺陷管理单元…