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

vue中,给一个URL地址,利用FileSaver.js插件下载文件到本地

①首先下载 FileSaver.js 插件   

npm install file-saver --save

②在需要的.vue页面引入

import { saveAs } from 'file-saver'

 在HTML中引入

<script src="https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script>
 //FileSaver.js只有一个函数就是saveAs,它有三个参数,//第一个是:Blob、File、Url    可以是二进制流、文件、URL的地址。//第二个是:文件的名字//第三个是:可选的object对象。// 示例saveAs(参数一,参数二, 参数三)

③ 如果想保存一个TXT文档本地

save(){let blob = new Blob(["Hello, world!"], {type: "text/plain;charset=utf-8"});saveAs(blob, "hello world.txt");
}// "Hello, world!"   是文件的内容
// "hello world.txt" 是文件的名字

结果:

 

内容:

 

 ④ 如果想保存一个图片

save(){saveAs('https://cube.elemecdn.com/6/94/4d3ea53c084bad6931a56d5158a48jpeg.jpeg', "image.jpg")
}// 注意:通过URL保存图片时,存在阿里云服务端的图片必须设置为允许跨域,
//       因为在通过saveAs函数下载时,会请求一次这个地址,如果没设置,则会出现跨域问题。

结果:

 图片内容:

 如果图片不允许跨域则会出现这种情况:

 

⑤下面这个方法则可以完美的解决跨域问题,不光可以下载图片还可以下载PDF文件等其他文件。

    download() {axios.post("/mth-finance-capital-service/api/common/download/file", {data:this.fileUrl}, {headers: {"Content-Type": 'application/octet-stream'},transformRequest: [function (data, headers) {return data['data']}],responseType: 'blob'}).then(response => {//  const contentType = response.headers['content-type']//  const blob = new Blob([response.data], {type: contentType})// 这地方是前端进行的 blob转换,接口里面后端做了之后,我们就不需要再做了。saveAs(response.data, this.fileUrlName) // saveAs(blob, this.fileUrlName)  要是前端转换的话就用这个}).catch(error => {console.log("----",error)// 处理错误})},// 1. 直接发送axios请求,第一个是请求地址。
// 2. 第二个是图片或者其他文件的URL链接;这地方必须要用{}包起来,data是形参最好也加上。
// 3. headers: {"Content-Type": 'application/octet-stream'},请求头
// 4. transformRequest: [function (data, headers) {  return data['data']  }],
//    表示允许在向服务器发送前,修改请求数据,data就是上面的形参。
// 5. responseType: 'blob' 后端返回的图片是二进制流的形式,所以要加这个。
// 6. this.fileUrlName 是文件的名字

⑥ 调接口的原因是,让后端把要下载的图片URL或者其他文件的URL,做一下转换,转成blob类型的。

这个是响应成功后,.then里面response的信息。

 最后调用,saveAs(response.data, this.fileUrlName)下载即可。

⑦ 结果:   // 文件名是第二个参数,我随便起的

 返回这样结果不要在意,到文件里打开图片就好了

打开之后的图片

 

 

⑧要是出现图片破损的情况:

 

 请检查发请求时 是否携带了 responseType: 'blob' ,要下载的图片链接是否用{}包起来了,回到步骤⑤看看。

相关文章:

vue中,给一个URL地址,利用FileSaver.js插件下载文件到本地

①首先下载 FileSaver.js 插件 npm install file-saver --save ②在需要的.vue页面引入 import { saveAs } from file-saver 在HTML中引入 <script src"https://cdn.bootcdn.net/ajax/libs/FileSaver.js/2.0.5/FileSaver.min.js"></script> //Fil…...

从0开始学python -34

Python3 输入和输出-2 读和写文件 open() 将会返回一个 file 对象&#xff0c;基本语法格式如下: open(filename, mode)filename&#xff1a;包含了你要访问的文件名称的字符串值。mode&#xff1a;决定了打开文件的模式&#xff1a;只读&#xff0c;写入&#xff0c;追加等。…...

瑞典军事研究:从认知心理学的视角探讨军事创新进程

来源&#xff1a;Military Innovation as the Result of Mental Models of Technology 《摘要》 政治紧张局势的加剧和技术发展的进步促使Scandinavian 国家&#xff08;斯堪的纳维亚半岛&#xff0c;欧洲最大的半岛&#xff0c;有挪威、瑞典两国以及芬兰北端的一小部分。&am…...

【MySQL进阶-08】深入理解innodb存储格式,双写机制,buffer pool底层结构和淘汰策略

MySql系列整体栏目 内容链接地址【一】深入理解mysql索引本质https://blog.csdn.net/zhenghuishengq/article/details/121027025【二】深入理解mysql索引优化以及explain关键字https://blog.csdn.net/zhenghuishengq/article/details/124552080【三】深入理解mysql的索引分类&a…...

5. AOP

一、如何定义一个MethodHandler? 1.Controller注解修饰的类 1.注册成Spring Bean 2.表示它是一个SpringMVC下的Controller 2.在这个类下的方法中&#xff0c;只要被RequestMapping修饰&&方法的形参符合规定&#xff08;需要看文档&#xff09; 方法的返回值符合规定…...

ubuntu上尝试libpqxx库链接人大金仓

ubuntu上尝试libpqxx库链接人大金仓 C的项目让使用国产数据库 运维给架了一个人大金仓数据库&#xff0c; Kingbase 8 是基于 PostgreSQL 9.6 做的&#xff0c; 尝试直接使用libpqxx链接数据库。 文章目录ubuntu上尝试libpqxx库链接人大金仓第一步 搭建libpqxx开发环境搜索lib…...

【Python入门第十二天】Python 列表

Python 集合&#xff08;数组&#xff09; Python 编程语言中有四种集合数据类型&#xff1a; 列表&#xff08;List&#xff09;是一种有序和可更改的集合。允许重复的成员。元组&#xff08;Tuple&#xff09;是一种有序且不可更改的集合。允许重复的成员。集合&#xff08…...

Android 异步操作库 RxJava

RxJava概述 RxJava 是一种响应式编程&#xff0c;来创建基于事件的异步操作库。基于事件流的链式调用、逻辑清晰简洁。 RxJava 我的理解是将事件从起点&#xff08;上游&#xff09;流向终点&#xff08;下游&#xff09;&#xff0c;中间有很多卡片对数据进操作并传递&#x…...

2021-12-05青少年软件编程(C语言)等级考试试卷(六级)解析

2021-12-05青少年软件编程(C语言)等级考试试卷(六级)解析T1. 电话号码 给你一些电话号码,请判断它们是否是一致的,即是否有某个电话是另一个电话的前缀。比如: Emergency 911 Alice 97 625 999 Bob 91 12 54 26 在这个例子中,我们不可能拨通Bob的电话,因为Emergency的…...

github 使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录一、git与github二、出错的地方1.GitHub没有css样式2、git clone出现错误3、明明创建了responsibility 但git 不显示一、git与github 这个博客写的很好&#xff01;…...

Kubernetes集群维护—备份恢复与升级

Etcd数据库备份与恢复 需要先安装etcd备份工具yum install etcd -y按不同安装方式执行不同备份与恢复kubeadm部署方式&#xff1a; 备份&#xff1a;ETCDCTL_API3 etcdctl snapshot save snap.db --endpointshttps://127.0.0.1:2379 --cacert/etc/kubernetes/pki/etcd/ca.cr…...

前端开发常用案例(二)

这里写目录标题1.loding加载动画2.全屏加载动画效果3.吃豆豆4.鼠标悬停3D翻转效果5.3D旋转木马效果6.flex弹性布局-酷狗音乐播放列表flex弹性布局-今日头条首页热门视频栏grid网格布局-360图片展示小米商城左侧二级菜单1.loding加载动画 代码如下&#xff1a; <!DOCTYPE h…...

基于springboot+vue的儿科保健计划免疫系统

基于springbootvue的儿科保健计划免疫系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取项目下载方式&#x1f345; 一、项目背…...

1.两数之和

难度简单给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。你可以按任意顺序…...

字符串匹配 - 模式预处理:KMP 算法(Knuth-Morris-Pratt)

Knuth-Morris-Pratt算法&#xff08;简称KMP&#xff09;是最常用的字符串匹配算法之一。算法简介如下算法解释主要来源于这里&#xff0c;但是通常很难阅读完全&#xff0c;我推荐你直接进入下一节 图例解释部分。我们来观察一下朴素的字符串匹配算法的操作过程。如下图&#…...

工程师手册:电源设计中的电容选用规则

摘要 电源往往是我们在电路设计过程中最容易忽略的环节。作为一款优秀的设计&#xff0c;电源设计应当是很重要的&#xff0c;它很大程度影响了整个系统的性能和成本。电源设计中的电容使用&#xff0c;往往又是电源设计中最容易被忽略的地方。一、电源设计中电容的工作原理 在…...

【安全开发】专栏文章汇总

安全开发–1–TCP和UDP网络编程 安全开发–2–嗅探邮箱协议口令 安全开发–3–Python实现ARP缓存投毒 安全开发–4–SSH通信工具开发 安全开发–5–编写简单的netcat工具 安全开发–6–一个简单的TCP代理工具开发 安全开发–7–SSH隧道工具开发 安全开发–8–Python实现流量数据…...

视频监控流程图4

<html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"/> <link rel"stylesheet" type"text/css" href"visio.css"/> <title> 视频监控流程图 </title> <…...

「JVM 编译优化」Java 语法糖(泛型、自动装箱/拆箱、条件编译)

「JVM 编译优化」Java 语法糖&#xff08;泛型、自动装箱/拆箱、条件编译&#xff09; 语法糖可以看做事前端编译期的一些小把戏&#xff1b;虽不会提供实质性的功能改进&#xff0c;但它们或能提高效率&#xff0c;或能提升语法的严谨性&#xff0c;或能减少编码出错的机会&a…...

Linux下的进程控制

目录 退出码 终止进程 进程等待 进程程序替换 自己实现简易shell命令行 内建命令 退出码 在编写代码时main函数内部我们通常都使用return 0;结尾&#xff0c;以此标识正常退出。这里的return 0就是所谓的退出码&#xff0c;Linux下也是一样&#xff1a; 看这个小程序&…...

AI编程助手规则库实战:从通用到专用的效率跃迁

1. 项目概述&#xff1a;当你的光标有了“规矩”最近在逛GitHub的时候&#xff0c;发现了一个挺有意思的项目&#xff0c;叫“awesome-cursorrules-zh”。光看名字&#xff0c;你可能会有点懵&#xff0c;“Cursor”是那个AI编程工具&#xff0c;“rules”是规则&#xff0c;那…...

DIY蓝牙游戏手柄:基于Arduino与Cherry MX轴体的全流程制作指南

1. 项目概述与核心思路几年前&#xff0c;我在折腾机械键盘时&#xff0c;看着手边多出来的几颗Cherry MX轴体&#xff0c;突然冒出一个想法&#xff1a;这些清脆、精准的触发单元&#xff0c;除了在键盘上噼里啪啦&#xff0c;能不能变成更直接的操控工具&#xff1f;比如&…...

从方程到应用:激光雷达核心参数与激光器选型指南

1. 激光雷达方程&#xff1a;从数学公式到物理意义 第一次接触激光雷达方程时&#xff0c;我也被那一堆希腊字母和下标搞得头晕眼花。但后来发现&#xff0c;这个看似复杂的方程其实就像买菜算账一样简单直白。激光雷达方程本质上是个"能量收支平衡表"&#xff0c;它…...

Linux重定向与管道:从文件描述符到高效命令行工作流

1. 项目概述&#xff1a;为什么重定向是命令行的效率倍增器&#xff1f;如果你在Linux命令行里混过一段时间&#xff0c;肯定遇到过这样的场景&#xff1a;想看看一个命令的输出&#xff0c;结果屏幕刷地一下滚过去几百行&#xff0c;关键信息一闪而过&#xff1b;或者想把一个…...

BilibiliDown终极指南:3步轻松下载B站高清视频与音频

BilibiliDown终极指南&#xff1a;3步轻松下载B站高清视频与音频 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.com/gh_mirrors/bi…...

AI智能体在社交约会场景中的架构设计与工程实践

1. 项目概述&#xff1a;当AI遇见约会&#xff0c;一个开源智能体的诞生最近在GitHub上看到一个挺有意思的项目&#xff0c;叫jessastrid/matchclaws-ai_agent_dating。光看名字&#xff0c;就能嗅到一股混合了技术、社交与未来感的独特气息。简单来说&#xff0c;这是一个利用…...

LEANN:基于选择性重计算的本地向量检索,实现97%存储压缩

1. 项目概述&#xff1a;LEANN&#xff0c;一个重新定义本地向量检索的开源项目如果你和我一样&#xff0c;对当前AI应用生态里动辄需要将个人数据上传到云端、依赖昂贵且臃肿的向量数据库感到厌倦&#xff0c;那么LEANN的出现&#xff0c;绝对会让你眼前一亮。这不仅仅是一个工…...

客户要求改iServer访问路径?别慌,手把手教你修改Tomcat配置+Nginx代理(附避坑点)

深度解析iServer访问路径修改&#xff1a;从Tomcat配置到Nginx代理的全链路实践 当客户提出"需要将iServer访问地址调整为特定路径格式"的需求时&#xff0c;许多运维工程师的第一反应可能是简单修改Nginx配置。但实际操作中会发现&#xff0c;仅靠代理层调整会导致…...

对比直接采购,使用聚合平台在模型选型上带来的灵活性体验

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 对比直接采购&#xff0c;使用聚合平台在模型选型上带来的灵活性体验 过去&#xff0c;当我们需要为不同的任务寻找合适的大模型时…...

Adobe-GenP激活工具:5分钟解锁Adobe创意套件全功能

Adobe-GenP激活工具&#xff1a;5分钟解锁Adobe创意套件全功能 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP Adobe-GenP是一款专为Adobe Creative Cloud用户设计的…...