点击按钮,下载文件

news/2024/10/23 11:24:41/

实现文件的下载功能

1、使用a标签

直接下载仅适用于浏览器无法识别的文件
如果是浏览器支持的文件格式,如html、jpg、png、pdf等,则不会触发文件下载,而是直接被浏览器解析并展示

    <ahref="http://xxxxxx.rar"download>下载压缩包,默认a连接</a><ahref="http://xxxxxx.jpg"download>下载图片,默认a连接</a>

2、location.href和window.open

对于一些浏览器无法识别的文件格式,可以直接再浏览器地址栏输入url即可触发浏览器的下载功能。
浏览器可以识别的会自动打开预览界面

      window.location.href ='xxxxx.rar'window.open('http://resource.teld.cc/teldimage/142/c7c5db8e52e748b8affe35625dbdc8ee.jpg')

3、文件流,原生Ajax

    function downloadFile(url, fileName) {var x = new XMLHttpRequest();x.open("GET", url, true);x.responseType = 'blob';x.onload = function (e) {console.log('x.response', x.response)var url = window.URL.createObjectURL(x.response)var a = document.createElement('a');a.href = url;a.download = fileName;a.click();}x.send();}

4、文件流,axios

第二层axios 返回的就是Blob 格式的数据类型 所以可以不用再 new Blob ,直接用window.URL.createObjectURL(res.data) 就可以

  <button id="download">下载文件22222</button><script>let downloadDom = document.querySelector('#download')downloadDom.addEventListener('click', function (e) {axios({ url: 'http://127.0.0.1:8000/fileDownload' }).then(res => {// 第一层的res是获取到了一个文件的 url 地址axios({ url: res.data.url, responseType: "blob" }).then(res => {console.log('第二层axios', res)// const blob = new Blob([res.data], {//   // type: 'application/x-rar-compressed;charset=utf-8'// })// console.log(blob)let a = document.createElement('a')a.style = 'display: none' // 创建一个隐藏的a标签a.download = '自定义.rar'// a.href = url// a.href = window.URL.createObjectURL(blob)a.href = window.URL.createObjectURL(res.data)document.body.appendChild(a)a.click() // 触发a标签的click事件document.body.removeChild(a)})})})</script>

在这里插入图片描述

# 别人的版本
function downloadFile(data,fileName){// data为blob格式var blob = new Blob([data]);var downloadElement = document.createElement('a');var href = window.URL.createObjectURL(blob);downloadElement.href = href;downloadElement.download = fileName;document.body.appendChild(downloadElement);downloadElement.click();document.body.removeChild(downloadElement);window.URL.revokeObjectURL(href); // 释放URL对象
}

5、参考连接

1、掘金前端实现文件下载(含多文件下载思路)的几种方法
2、Blob MDN


http://www.ppmy.cn/news/193796.html

相关文章

PCL点云处理之分层切片法计算树冠投影面积 (一百七十四)

PCL点云处理之分层切片法计算树冠投影面积 (一百七十四) 一、算法介绍二、方法流程三、具体实验1.代码2.效果四、算法总结一、算法介绍 在上一节中,通过树冠整体投影到同一水平面后,计算凸包面积,粗略估计了树冠投影面积,但在通常的研究学习中,这种方法较为笼统,大部分…

免费售后——公司办公电脑配置单2500到4500档(包含显示器)

为公司需要新配几台电脑&#xff0c;老板出于对我电脑技术的信任&#xff0c;就有我来出配置单。 在网上&#xff08;京东天猫&#xff09;购买配件再由我来组装&#xff0c;其实我是有点担心的&#xff0c;但想到这也是工作职责嘛&#xff0c;而且可以组一台自己适用的新电脑…

操作系统-进程和线程-处理机调度

目录 一、调度的概念 1.1调度的层次 1.1.1高级调度(作业调度) 1.1.2中级调度(内存调度) 1.1.3低级调度(进程调度) 1.2状态模型 1.3调度的时机 1.4调度方式 1.5进程的切换与过程 二、调度算法的评价指标 2.1CPU利用率 2.2吞吐量 2.3周转时间 2.4带权周转时间 2.5等…

购买笔记本电脑的要点品牌篇

购买笔记本电脑的要点品牌篇 笔记本电脑的品牌的特点和等级分类。说到这&#xff0c;觉得可能要得罪人了&#xff0c;在论坛上有很多各大厂商的工作人员、各大品牌的销售人员、对某个品牌情有独钟的人士、还有爱国主义&#xff08;抵制某某品牌的&#xff09;&#xff0c;可真多…

计算机的配置电脑上,怎么配电脑

CPU的型号多种多样&#xff0c;其命名(如8700K)也无法让人一眼明白它的性能强弱。对于一个电脑硬件小白来说&#xff0c;想要挑选到合适自己需求的CPU并不是一件容易的事情。CPU生产厂商也并不是不知道这一点&#xff0c;只是想要精准的满足不同的需求&#xff0c;就需要生产多…

学计算机电脑厚度23mm,轻薄机身兼具生产力!适合专业人士的轻薄笔记本电脑,了解下?...

原标题&#xff1a;轻薄机身兼具生产力&#xff01;适合专业人士的轻薄笔记本电脑&#xff0c;了解下&#xff1f; 提到生产力工具这一概念&#xff0c;今时今日的人们能想到的必然不仅是锄头、卡车、纺织机等传统工具&#xff1b;对许多现代人而言&#xff0c;照相机、电脑、手…

台式机硬件常识

一、关于CPU 1.CPU频率越高性能就越高吗&#xff1f;不一定。这是在很多新手当中存在的误区。CPU性能取决于很多综合参数&#xff0c;不一定根频率成正比。当然&#xff0c;在同系列的CPU中&#xff0c;比如都是赛扬4&#xff0c;频率越高性能越高。 2.为什么赛扬高频低能&…

从真正的零组建一台日常使用PC+NAS

从真正的零组建一台日常使用PCNAS 1、前言1.1自我介绍1.2组NAS的起因1.3预期效果1.4目前效果1.5衷心劝告1.6、所需文件下载 2、硬件选购3、红米AX6000刷openwrt3.1、降级并恢复出厂设置3.2、安装虚拟机、openwrt软路由3.3、设置软路由3.4、开始AX6的ssh3.5、刷入 openwrt 固件3…