【前端学习记录】下载功能实现小记

AI开发提效10倍:从需求到部署的全流程实战指南(附Prompt模板) 用AI开发不是“偷懒”,而是把时间花在更有价值的地方——原来花80%时间写重复代码,现在用AI搞定后,能把精力放在“优化用户体验”“提升系统性能”这些核心工作上,这才是AI给开发者的真正红利。如果你还没开始用AI做开发,建议从“写一个简单接口”“补一段注释”开始尝试,先用起来再优化方法。记住:AI是工具,不是对手,学会驾驭它,你会发现开发效率提升的同时,还能告别无效加班。 阅读详情

前言

在项目中,通常会遇到很多需要下载的需求,那么应该如何处理下载功能呢?

通过模拟a标签实现下载

直接上代码

<template>
  <div>
    <p @click="downloadFile" style="cursor: pointer; color: blue;">Download File</p>
  </div>
</template>

<script>
export default {
  methods: {
    downloadFile() {
      // 替换成你要下载的文件的URL
      const fileUrl = 'https://example.com/path/to/your/file.txt';

      // 创建一个隐藏的<a>元素
      const downloadLink = document.createElement('a');
      downloadLink.href = fileUrl;
      downloadLink.download = 'downloaded_file.txt'; // 可以设置下载后的文件名

      // 将<a>元素添加到文档中
      document.body.appendChild(downloadLink);

      // 触发点击事件
      downloadLink.click();

      // 移除<a>元素
      document.body.removeChild(downloadLink);
    }
  }
};
</script>

我们使用了@click监听点击事件,当用户点击文本时,downloadFile方法会被调用。该方法与之前的纯HTML/JS示例相似,创建一个隐藏的<a>元素,设置文件的URL和下载文件名,触发点击事件,然后移除<a>元素。

通过接口实现下载

这种方式也比较常见,这里以Vue搭配axios为例实现该功能。请求时需要加上responseType: 'blob',,接下来以实际的例子来说明

downloadFile() {
      // 替换成你的下载接口的URL
      const downloadUrl = 'https://example.com/api/download';

      axios({
        url: downloadUrl,
        method: 'GET',
        responseType: 'blob', // 设置响应类型为 blob
      })
      .then(response => {
		// 处理文件下载
	    let blob = new Blob([res.data]);
	    let downloadElement = document.createElement('a');
	    let href = window.URL.createObjectURL(blob);
	    let fileName = 'downloaded_file.txt';
	    if ('msSaveOrOpenBlob' in navigator) {
	      // 检查该函数在 navigator 对象中是否可用
	      window.navigator.msSaveOrOpenBlob(blob, fileName);
	    } else {
	      downloadElement.href = href;
	      // 设置下载文件名字
	      downloadElement.download = fileName;
	      document.body.appendChild(downloadElement);
	      downloadElement.click();
	      // 释放资源
	      document.body.removeChild(downloadElement);
	      window.URL.revokeObjectURL(href);
	    }
      })
      .catch(error => {
        console.error('下载失败', error);
      });
    }

在 Internet Explorer 中,msSaveOrOpenBlob 函数用于保存或打开文件。如果该函数可用,说明浏览器是 Internet Explorer,你可以使用此函数来相应地处理 Blob。

请注意,这仅适用于 Internet Explorer,并且现代浏览器(如 Chrome、Firefox、Edge、Safari)使用不同的方法,因为这个函数在这些浏览器中不受支持。如果需要,确保为其他浏览器提供替代方法。

需要注意的是,通常下载的逻辑都是统一的,如果一个系统中有多处涉及到下载,那么下载的处理逻辑可以放在响应拦截器中,通过后台返回的content-type进行判断是否是下载请求,常见的有:'application/x-msdownload', 'application/force-download', 'application/octet-stream',

Simulink模块库介绍(一)——信号源模块 Simulink模块库介绍(一)——信号源模块库目录Clock模块Digital Clock模块Band-Limited White Noise模块 目录 simulink模块库中提供了丰富的信号源模块组。逐一介绍,算是对之前做个总结吧 Clock模块 通过时钟模块,输出的时间作为判断呢,如下图,前2s之前为高斯白噪声,后2s为正弦曲线,共计10s。 Digital Clock模块 数字时钟模块主要用于离散系统的计时,sample time表示采用时间,如下图:分别是1s和0.5s的采样时间 Band- 阅读详情

相关推荐

组态王通过以太网与西门子S7-200 SMART PLC通讯案例详解

通过以上步骤,我们成功实现了组态王与西门子S7-200 SMART PLC的以太网通讯。这一技术不仅提高了工业自动化系统的灵活性和可靠性,还为初学者提供了一个实用的学习案例。希望本文能帮助您快速掌握组态王与西门子S7-200 SMART PLC的通讯技术。如有任何疑问,欢迎留言讨论!

2401_88785500的博客 2005

前端模拟a标签下载文件

转载请标明,另:能力所限,如代码有漏,请君指正,共勉。

qq_39308550的博客 449

A Mathematical Framework for Transformer Circuits—(一)

transformer数学理解理论

qq_42208244的博客 2665

前端实现下载文件的各种方式

上面的方案这么多,其实最终还是落到a标签上,所以不管是通过浏览器的内置行为进行下载,还是通过ajax进行下载,文件下载的最终还是浏览器的行为。

码农键盘上的梦 7046

把消息说清楚:OData V2 的 sap-message、错误体 errordetails 与 ABAP 端落地实践(Gateway Foundation / RAP)

OData V2消息机制解析:SAP业务系统的结构化通信设计 本文深入剖析了SAP系统中OData V2协议的消息传递机制。该设计通过双通道(成功时使用sap-message响应头,失败时采用error响应体)实现业务数据与提示信息的结构化分离,解决了企业级应用中"只返回业务数据"或"简单报错"的不足。文章详细解读了消息结构中的关键要素:target字段实现精准UI定位、severity级别控制交互流程、transition标记区分状态消息与过渡消息。同时揭示了SAP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 852

汽车电子RTOS--AUTOSAR OS

AUTOSAR OS(AUTomotive Open System ARchitecture Operating System)是AUTOSAR(汽车开放系统架构)标准中的一个重要组件,它是一个专门为汽车电子控制单元(ECU)设计的实时操作系统(RTOS)。AUTOSAR OS旨在提供一个标准化的软件平台,以促进不同供应商和汽车制造商之间的组件复用和协同开发,提高软件质量和降低成本。

MHD0815的博客 1799

前端实现文件下载的几种方法

前端实现文件下载的几种方法

weixin_69174819的博客 7805

使用机器学习算法预测黄金价格

在本文中,我们将使用线性回归、XGBoost和LSTM这三种不同的机器学习算法来预测黄金价格。接下来,我们使用线性回归、XGBoost和LSTM分别建立了模型,并进行了训练和预测。这些机器学习算法可以帮助我们对黄金价格进行预测,但请注意,市场价格受多种因素影响,因此预测结果可能并不完全准确。接下来,我们需要对数据进行一些预处理,以便用于机器学习模型的训练和测试。我们将使用80%的数据作为训练集,20%的数据作为测试集。最后,我们将绘制每个模型的预测结果,并将其与实际价格进行比较,以评估模型的性能。

QromMatlab的博客 1316

前端:下载文件(多种方法)

前端经常会有下载文件的需求,这里总结了几种常用的方法,方便日后查看。

snow的博客 2万+

SAP 标准 CDS View 到底能不能用 CDS Extension View 扩展,我们在项目里应该这样判断

文章摘要:判断SAP标准CDS视图(如A_PRODUCT)能否扩展字段,不能仅凭命名或@Metadata.allowExtensions判断,需检查DDL源码中的@AbapCatalog.viewEnhancementCategory值。#PROJECTION_LIST允许扩展字段,#NONE则禁止。聚合视图需额外包含#GROUP_BY,UNION视图需#UNION。CDS View Extension用于新增字段,Metadata Extension仅用于添加注解。在ABAP Cloud环境中还需检查AP

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 100

数据库常见面试题(附答案)

1.事务四大特性 原子性,要么执行,要么不执行 隔离性,所有操作全部执行完以前,其它会话不能看到过程 一致性,事务前后,数据总额一致 持久性,一旦事务提交,对数据的改变就是永久的 2.数据库隔离级别,每个级别会引发什么问题,mysql默认是哪个级别 脏读:事务B读取事务A还没有提交的数据 不可重复读:两次事务读的数据不一致 幻读:事务A修改了数据,事务B也修改了数据,这时在事务A看...

csdn问鼎 46万+

Spring Security http basic 示例代码

去下载

ICode联盟 1295

springboot&mybatis中数组和字符串数据类型的转换

/前端数组字段//数据库中字段/*与前端交互时使用的get/set*/System.out.println("接收前端数据");/*与前端交互时使用的get/set*//*与数据库交互时使用的get/set*/System.out.println("从数据库中读取数据");/*与数据库交互时使用的get/set*/

l_q_l的专栏 2476

前端小记(一)

前端小记(一) 这篇博客是结合网易云课堂教程所写 一. Sublime出现的小问题和小应用 1.关于package control组件 在通过群里的安装包下载sublime以后,就按照指引去安装package control组件,但我这里的console仿佛抽了风,复制那个口令以后鼠标在应用里一直转圈圈,还显示未响应!这和指引上所说的左右摆动的小东西完全不一样啊!我一度怀疑自己的安装是否正确,就按照指引在sublime官网上又下载了一次。好家伙!也是未响应。有一天又尝试输入口令,然后把它忘记了,就去看HT

一只小鹿的博客 242

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

FireShell CTF 2019小记

FireShell CTF 2019小记 8说了,国际赛的难度大家都晓得滴。看题 Python Learning Environment 沙盒逃逸orz,最近喜欢玩的一个东东。 在前端的python.js里面可以看到一些waf源码。不过还没有我自己fuzz来的快,毕竟前端也不是很熟,源码又太多。 fuzz结果:不能用数字,不能用[],还有一堆常见的关键词需要绕过。以及内置函数只剩下exec和pri...

郁离歌丶的博客 1122

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

前端工程化小记

前端领域早已不是以前的纯js、jquery 时代,模块化、工程化也成为了前端领域的追求,这样才能保证前端程序的可读性,可维护性,健壮性等等

Z__7Gk的博客 416

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

超简单:tslint prettier commitlint前端工程化小记

前端基本工程化配置(代码健壮性、代码可读性、commit规范相关)

一步一个脚印 1747

RN 学习小记之使用 Expo 创建项目

本文Hexo博客链接🔗 https://ysx.cosine.ren/react-native-note-1xLog链接🔗 https://x.cosine.ren/react-native-note-1RSS订阅 📢 https://x.cosine.ren/feed/xml由于业务需要,开始学习RN以备后面的需求,而虽然之前有用过 RN 但是项目搭建等都是封装好的脚手架,对本身其实了解不算太多,于是打算记录一下个人从头搭建 RN 项目的一个过程。顺带进行一个资料收集。

cos的博客 5157

Django学习小记(七)-----Session、Form、文件上传下载

目录一、session认证 一、session认证

chucksun0426的博客 529

现代前端开发小记

我的前端开发 web开发分为前后,作为一个后端工程师,或者是前端小白,前端的开发可能会很头疼。 一路走来,坎坎坷坷,好在升级打怪还是会遗留一些经验的,记录下现代前端开发的经验。 黑暗时代的前端开发 在这个时代,前端开发的流程可能是这样的: * 写各种html、css、js * 跑到各种前端模块...

chitudai8716的博客 128

【开发小记】前端性能指标和工具

最大内容绘制,可视区域中最大的内容元素呈现到屏幕上的时间,用以估算页面的主要内容对用户的可见时间。首次输入延迟,从用户第一次与页面进行交互到浏览器实际能够响应改交互的时间,输入延迟是因为浏览器的主线程正忙于做其他事情,所以不能响应用户,发生这种情况的一个常见原因是浏览器正在忙着解析和执行应用程序加载的大量计算的JavaScript。网页第一次完全达到可交互状态的时间点,浏览器已经可以持续的响应用户的输入,完全达到可交互的状态的时间是在最后一个长任务完成的时间,并且在随后的5s内网络和主线程是空闲的。

GUANYX的博客 855

前端和后台进行大量数据同步的一个小记

最近在做一个前端收银的项目,其中一块很恶心的问题就是商品库数据同步的问题,来记录一下整个过程。     由于商品同步的数据量较大,所以采用了文件同步的方式。     整个逻辑流程如下:      ①下载服务端数据(zip压缩包)→②解压并解析里面的文件列表(files)→③跟本地数据库的数据进行对比修改→④服务端数据对比修改完成后,打包本地差异数据      →⑤将本地的差异数据包上传到服

rouzi1230的专栏 7149

js 数据写到本地记事本_「前端小记」从线上开发到本地化

开篇这篇文章是因为想总结一下一直以来工作中记录在记事本中的前端知识点。从而进行复盘。虽然不是所有的知识点都记录下来的,但是其实也记录了很多。知识是无限的,如果之前记录的知识后来没有去回顾和使用,那和没有记录是没有区别的。而且我希望发布一些文章,应该也能给别人带来一些帮助,尽管自己能力有限,可能在大佬看来不算什么,但总能帮助到一些人的。废话不多说,那么马上开始吧。欢迎关注公众号:大前端早读起因以前的...

weixin_39713219的博客 447

js 获取本地ip_「前端小记」从线上开发到本地化

开篇这篇文章是因为想总结一下一直以来工作中记录在记事本中的前端知识点。从而进行复盘。虽然不是所有的知识点都记录下来的,但是其实也记录了很多。知识是无限的,如果之前记录的知识后来没有去回顾和使用,那和没有记录是没有区别的。而且我希望发布一些文章,应该也能给别人带来一些帮助,尽管自己能力有限,可能在大佬看来不算什么,但总能帮助到一些人的。废话不多说,那么马上开始吧。欢迎关注公众号:大前端早读起因以前的...

weixin_39763902的博客 193

websocket的小记

这几天学习websocket终于把前后端都调通了,现在就记录一下.因为最后配置的apapche,印象比较深,就从apache配置开始.参考websocket;apache支持配置之前使用的xampp里的apache,是2.2版本的,不支持ws协议.所以昨天下午下午加今天早上把apapche配置都搞通了.先卸载了xampp,下载安装了2.4的apache 安装初步配置教程先把 httpd.conf里的

saizzzzzz的专栏 2932

svn使用过程小记

项目比较着急,仅简单记录下工作中遇到的问题, 两个前端同事使用的hbuilder,下载项目的时候各种问题,最后终于问题统一了,报错文件夹已不存在 然后查找原因,是svn中的authz文件中用户名写错了,跟账户中不一样

fjnjxr的博客|PHP每周一贴 328
上一篇: 【前端学习记录】记一次分片上传逻辑的调试过程
下一篇: 【前端学习记录】Vuex状态管理学习笔记
Note_creek
博客等级 码龄10年 372粉丝 53原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值