前端下载文件

下载文件最简单的方式,就是后端提供一个下载地址。前端只需要a链接绑定这个下载地址即可

<a href="下载地址" download>下载</a>

download也可以等于一个值,这个值就是文件名

但是如果后端传给我们的是一个文本或者字节流,则就需要我们用Blob对象再进行一下处理,把后端给的二进制或者文本数据利用Blob对象生成一个下载地址,然后创建a链接,自动触发a链接进行下载

下载json文件

<template><el-button @click="downFile">下载普通文件</el-button>
</template><script setup lang="ts">
import { reactive } from 'vue'// 假装这是后端返回的文件内容
const obj = reactive({name: 'zs',age: 25,gender: 1
})const downFile = () => {const blob = new Blob([JSON.stringify(obj)], { type: 'application/json' })// console.log(blob) // Blob {size: 33, type: 'application/json'}// 创建一个指向类型化数组的 URL 其实就是把上面的blob数据转换为了一个可以下载的url地址let href = window.URL.createObjectURL(blob)// 下载地址既然有了,那就可以生成一个a标签,直接自动点击下,就可以下载了const a = document.createElement('a')a.href = href // a链接的下载地址a.setAttribute('download', 'data.json') // 把a标签设置为下载,并为文件取名document.body.appendChild(a) // 把a链接插入到结构中a.click() // 自动点击触发下载// 下载完成后,记得移除a标签和释放生成的下载链接document.body.removeChild(a)window.URL.revokeObjectURL(href)
}
</script>

下载zip文件

<template><el-button @click="downZipFile">下载zip文件</el-button>
</template><script setup lang="ts">
import axios from 'axios'const downZipFile = () => {// 请求zip文件数据   记得一定要给axios请求指定为blobaxios.get('后端给的地址', { responseType: 'blob' }).then((res: any) => {// console.log(res)// Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取const blob = new Blob([res], { type: 'application/zip' })// console.log(blob)// 创建一个指向类型化数组的 URL 其实就是把上面的blob数据转换为了一个可以下载的url地址let href = window.URL.createObjectURL(blob)// 下载地址既然有了,那就可以生成一个a标签,直接自动点击下,就可以下载了const a = document.createElement('a')a.href = href // a链接的下载地址// a.setAttribute('download', 'data.zip') // 把a标签设置为下载,并为文件取名document.body.appendChild(a) // 把a链接插入到结构中a.click() // 自动点击触发下载// 下载完成后,记得移除a标签和释放生成的下载链接document.body.removeChild(a)window.URL.revokeObjectURL(href)})
}
</script>

下载其他文件(例如.doc,.xls,.ppt,.tar...)也是同理的,只需要改下Blob里对应的type

下面是office文件所对应的的 Content-type 类型 Content-type 类型总结

office文件所对应的的 Content-type类型Content-type类型总结 - 简书 (jianshu.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/119169.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

出差学小白知识No5:|Ubuntu上关联GitLab账号并下载项目(ssh key配置)

1 注冊自己的gitlab账户 有手就行 2 ubuntu安装git &#xff0c;并查看版本 sudo apt-get install git git --version 3 vim ~/.ssh/config Host gitlab.example.com User your_username Port 22 IdentityFile ~/.ssh/id_rsa PreferredAuthentications publickey 替换gitl…

C++多态的认识与理解

多态的概念 通俗来说&#xff0c;多态就是多种形态。具体点就是去完成某个行为&#xff0c;当不同的对象去完成时会产生出不同的状态。 比方说买高铁票时&#xff0c;如果你是学生的话&#xff0c;买票就有优惠。如果你是军人的话&#xff0c;就可以优先买票。普通人的话&…

Vue自定义指令实现按钮级的权限控制

通过v-指令&#xff0c;控制页面上的权限按钮的显示隐藏。首先是我的权限按钮数据&#xff0c;通过登录接口后端返回&#xff0c;前端将数据存在vuex里&#xff0c;在调用指令时候获取到当前页面对应的按钮权限数组&#xff0c;通过v-指令传递标识判断是否在当前页按钮权限数组…

一文了解和使用nginx(附带图文)

前言 这是我在这个网站整理的笔记,有错误的地方请指出&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 一文了解和使用nginx 一. nginx 简介1.1 什么是 nginx 和可以做什么事情1.2 正向代理1.3 反向代理1.4 负载均衡1.5 SSL 配置1.6 管理…

代码训练营第51天:leetcode121买卖股票的最佳时机|leetcode122买卖股票的最佳时机2

leetcode121&#xff1a;买卖股票的最佳时机 文章讲解&#xff1a;leetcode121 leetcode122&#xff1a;买卖股票的最佳时机2 文章讲解&#xff1a;leetcode122 目录 1&#xff0c;leetcode121 买卖股票的最佳时机 2&#xff0c;leetcode122 买卖股票的最佳时机2 1&#xff0…

react中的函数式组件和类式组件

一、函数组件 1. 定义函数组件 在React中&#xff0c;函数组件&#xff08;Functional Component&#xff09;是一种通过纯粹的JavaScript函数定义的UI组件。函数组件采用函数的方式接收一个输入参数 props&#xff0c;并返回一个React元素或者一组React元素作为输出。定义函…

苹果官宣新品发布会 10月31日发布会与Mac有关

10 月 25 日消息&#xff0c;苹果宣布将于北京时间 10 月 31 日上午 8 点举行主题为“来势迅猛”的线上特别活动&#xff0c;届时或将有新品发布。 这场发布会与以往不同&#xff0c;将在北京时间 10 月 31 日上午 8 点举行。有很多猜测认为苹果届时会发布新款 Mac 电脑&#x…

TS的内置类型-Pick,Omit

简介 今天我们聊聊Typescript的内置工具类型&#xff0c;其中有两个类型颇为有意思。那就是 Pick (选取) 和 Omit (排除)。 核心&#xff1a;Pick 与 Omit 从现有类型中得到可复用类型 Pick 作用&#xff1f; 从类型对象中选取指定的属性类型 Omit 作用&#xff1f; 从类型…

Jenkins+Ant+Jmeter接口自动化集成测试

一、Jenkins安装配置 1、安装配置JDK1.6环境变量&#xff1b; 2、下载jenkins.war&#xff0c;放入C:\jenkins目录下&#xff0c;目录位置随意&#xff1b; Jenkins启动方法&#xff1a; cmd进入Jenkins目录下&#xff0c;执行java -jar jenkins.war 浏览器输入&#xff1a;l…

行为型模式-观察者模式

观察者模式是一种行为型设计模式&#xff0c;它定义了一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;其所有依赖者都会收到通知并自动更新。 当对象间存在一对多关系时&#xff0c;则使用观察者模式。比如&#xff0c;当一个对象被修改时&#xff0…

JavaSE 二叉树

目录 1 树型结构1.1 概念1.2 树的表示形式1.3 树的应用 2 二叉树2.1 概念2.2 二叉树的基本形态2.3 两种特殊的二叉树2.4 二叉树的性质2.5 二叉树的存储2.6 二叉树的基本操作2.6.1 二叉树的遍历2.6.2 二叉树的基本操作 2.7 基础练习题2.7.1 二叉树的前序遍历2.7.2 二叉树中序遍历…

Vue组件的本质和手写通过render渲染函数渲染组件

1.组件的本质 组件就是一组 DOM 元素的封装&#xff0c;本质就是一个对象 (mounted函数中打印一下组件即可看到打印的是一个对象) 如何利用javascript对象来描述一个组件&#xff1f; const MyComponent {render() {return {tag: div,props: {onClick: () > alert(hell…

TensorFlow2从磁盘读取图片数据集的示例(tf.data.Dataset.list_files)

import os import warnings warnings.filterwarnings("ignore") import tensorflow as tf from tensorflow.keras.optimizers import Adam from tensorflow.keras.applications.resnet import ResNet50 from pathlib import Path import numpy as np#数据所在文件夹 …

Unity C#中LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查

LuaTable、LuaArrayTable、LuaDictTable中数据的增删改查 介绍Lua表lua表初始化lua移除引用lua中向表中添加数据lua中表中移除数据lua表中连接数据lua表中数据排序获取lua表长度获取表中最大值 UnityC#中LuaTableUnityC#中LuaArrayTable、LuaDictTable、LuaDictTable<K,V>…

Java游戏修炼手册:2023 最新学习线路图

前言 有没有一种令人兴奋的学习方法&#xff1f;当然有&#xff01;绝对有&#xff01;而且我要告诉你&#xff0c;学习的快乐可以媲美游戏的刺激。 小学时代&#xff0c;我曾深陷于一款名为"八百万勇士的梦"的游戏。每当放学&#xff0c;我总是迫不及待地打开电脑&a…

ES(elasticsearch) - 三种姿势进行分页查询

1. from size 浅分页 "浅"分页可以理解为简单意义上的分页。它的原理很简单&#xff0c;就是查询前20条数据&#xff0c;然后截断前10条&#xff0c;只返回10-20的数据。这样其实白白浪费了前10条的查询。 GET test_dev/_search {"query": {"bool&…

【tg】 7 GroupInstanceCustomImpl

group GroupInstanceCustomImpl 核心GroupInstanceCustomInternal G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\group\GroupInstanceCustomImpl.h 最核心是是GroupInstanceCustomInternal: private:std::shared_ptr<Threads> _threads;std::u…

Spring-Bean的生命周期概述

Bean的生命周期概述 入门使用的Spring代码&#xff1a; ClassPathXmlApplicationContext context new ClassPathXmlApplicationContext("spring.xml"); UserService userService (UserService) context.getBean("userService"); userService.test(); …

Node.js的readline模块 命令行交互的模块

Node.js是一个非常流行的JavaScript运行时环境&#xff0c;它提供了许多内置模块来帮助我们开发应用程序。其中之一是readline模块&#xff0c;它提供了一种简单的方法来读取用户输入并进行交互。 本文将详细介绍readline模块的API和使用案例&#xff0c;并附有代码注释。 re…

财报解读:步步逼近ChatGPT,科大讯飞即将迎来全面爆发?

10月份&#xff0c;科大讯飞进入新的成果验证节点。 一是进一步透露AI进展的财报发布。三季报显示&#xff0c;科大讯飞仍然保持较为稳健的发展步伐&#xff0c;营收始终处于增长状态&#xff0c;对讯飞星火认知大模型的应用成果&#xff0c;进行了进一步揭示。基于此&#xf…