vue中blob文件下载及其它下载方式
一、Blob对象的了解
1:blob表示一个不可变、原始数据的类文件对象。Blob()构造函数返回一个新的blob对象;blob对象的内容由参数给出的值串联组成;
2:new Blob(array, options):
array:是一个由ArrayBuffer、Blob和DOMSting等对象构成的Array,它将会被放在Blob;
options:对象中有两个参数: type:默认为"",表示将会被放入到blob中数组内容的MIME类型;endings:用于指定包含行结束符的字符串如何被写入;
二、URL api以及 URL.createObjectURL()
1:URL接口是用于解析、构造,规范化和编码的URLs;
2:new URL() 创建并返回一个URL()对象,该URL对象引用使用绝对URL字符串,相对URL字符串和基本URL字符串指定的URL;
3:属性: hash、host、hostname、href、search等
4:静态方法:
createObjecURL() :返回一个DOMSting,包含一个唯一的blob链接,这个url的生命周期和创建它的窗口document绑定
revokeObjectURL():销毁之前使用createObjectURL创建的url
三、接收并下载文件流(blob对象)
// 1、接收服务器返回数据时,需设置
responseType: 'blob'// 2、创建一个临时的url指向blob对象
var blob = new Blob(array, options)
var url = URL.createObjectURL(blob) // 3、创建之后可以模拟一系列的操作
var a = documen.createElement('a')
a.href = url // 给a标签赋上下载地址
a.style.display = 'none' // 让a标签不显示
document.body.appendChild('a') // 将a标签append到文本中
a.click() // a标签自点击 // 4、释放这个临时的对象URL
URL.revokeObjectURL(blob)
# 下方图片是自己项目中使用的方法 - 仅供参考

四、通过iframe方式下载
<el-button size="mini" class="filter-item" type="primary" icon="el-icon-download" @click="handleExport(scope.row)">导出</el-button>
// method方法:
handleExport(row) {
var elemIF = document.createElement('iframe')
elemIF.src = 'user/downloadExcel?snapshotTime=' + formatDate(new Date(row.snapshotTime), 'yyyy-MM-dd hh:mm') +
'&category=' + row.category
elemIF.style.display = 'none'
document.body.appendChild(elemIF)
}
# iframe:内联框架,就是在本页面显示其他页面内容的功能;若感兴趣了解:https://www.w3school.com.cn/tags/tag_iframe.asp
总结:js下载文件的两种方式
1:如果服务器的静态目录下有静态资源,后台人员给你文件路径,就可以通过window.location.href方式获取
2:如果服务器没有静态资源,后台会返回一个文件流,接收到将文件写入内存中,并且创建一个a标签,a链接的href属性指向内存中的文件,download属性指向文件名,模拟a标签的点击事件,然后进行下载
vue中blob文件下载及其它下载方式的更多相关文章
- Vue中常用的几种传值方式
Vue中常用的几种传值方式 1. 父传子 父传子的实现方式就是通过props属性,子组件通过props属性接收从父组件传过来的值,而父组件传值的时候使用 v-bind 将子组件中预留的变量名绑定为da ...
- vue中使用better-scroll的2种方式简述
前言 better-scroll官方demo展示:https://ustbhuangyi.github.io/better-scroll/#/examples/en better-scroll官方文档 ...
- django 中实现文件下载的3种方式
方法一:使用HttpResponse from django.shortcuts import HttpResponse def file_down(request): file=open('/hom ...
- Vue中常用的三种传值方式
父传子 父子组件的关系可以总结为prop向下传递,事件向上传递.父组件通过prop给子组件下发数据,子组件通过事件给父组件发送消息. 父组件: <template> <div> ...
- vue中怎么实现获取当前点击对象this
应用场景 在评论列表中,有很多条评论(通过循环出来的评论列表),评论的文字有多跟少,默认展示2行超出显示点击查看更多,,要点击查看更多对当前的这条评论进行全部评论展示! 问题描述 要是在传统的点击事件 ...
- vue中scoped vs css modules
注意:此文是默认你已经具备scoped和css modules的相关基础知识,所以不做用法上的讲解. 在vue中,我们有两种方式可以定义css作用域,一种是scoped,另一种就是css module ...
- 在action中进行文件下载,下载时运行不报错,可是也不下载
在写前端下载页面时,使用ajax方式调用action中的方法,然后就将下载内容返回js中了,所以没有下载,之后改为使用Windows.location进行下载,就没有问题了. action中代码: i ...
- vue中的文件上传和下载
文件上传 vue中的文件上传主要分为两步:前台获取到文件和提交到后台 获取文件 前台获取文件,主要是采用input框来实现 <el-dialog :title="addName&quo ...
- 【文件下载】Java下载文件的几种方式
[文件下载]Java下载文件的几种方式 摘自:https://www.cnblogs.com/sunny3096/p/8204291.html 1.以流的方式下载. public HttpServl ...
随机推荐
- centos7 环境安装rabbitmq 集群
继上一篇https://www.cnblogs.com/drafire/p/10062891.html ,这篇博客继续介绍centos 7下安装rabbitmq的集群. 今天在公司搞了一天的rabbi ...
- NetCore微服务实现事务一致性masstransit之saga使用
demo如下,一个订单处理的小例子: 首先看看结果很简单: 核心代码如下: using MassTransit; using Microsoft.Extensions.DependencyInject ...
- 数据库SQL之学习SUM总和套用条件CASE WHEN语句
1.SQL之学习SUM总和套用条件CASE WHEN语句 2.条件语句CASE WHEN 格式已经在图中写的很明白了 -- 查询t_wzw库中所有数据 总和(条件为t_wzw.birthday > ...
- 带你玩转prefetch, preload, dns-prefetch,defer和async
现代浏览器性能优化-JS篇 众所周知,JS的加载和执行会阻塞浏览器渲染,所以目前业界普遍推荐把script放到</body>之前,以解决js执行时找不到dom等问题.但随着现代浏览器的普及 ...
- 关于Echarts的填坑之旅
正如标题所说,这是Echarts的一遍填坑,如果你是一些echart的配置的话可以阅读http://echarts.baidu.com/opti...的官网配置信息.今天我想给大家分享的是一些我前段时 ...
- 在linux环境下安装VMtools(成功)
想在主机和虚拟机之间互相复制文件吗? 想更加方便的联系主机和虚拟机吗? 就安装VMtools吧 其实,在linux下安装VMtools 是非常的简单,只要简单地几步就行了! 第一步:打开虚拟机,在左 ...
- c++实现中介者模式--虚拟聊天室
内容: 在"虚拟聊天室"实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下: 1. 新的具体聊天室中发送的图片大小不得超过20M. 2. 新的具体聊天室中发送的文字长度不 ...
- 什么是机器学习的特征工程?【数据集特征抽取(字典,文本TF-Idf)、特征预处理(标准化,归一化)、特征降维(低方差,相关系数,PCA)】
2.特征工程 2.1 数据集 2.1.1 可用数据集 Kaggle网址:https://www.kaggle.com/datasets UCI数据集网址: http://archive.ics.uci ...
- Windows 10搭建FTP服务器
1 开启FTP服务 控制面板 -> 程序和功能 -> 启用或关闭Windows功能 找到下面选项的勾选 2 添加FTP站点 在开始菜单里面输入 IIS 搜索并打开 IIS管理器 展开左侧菜 ...
- SpringMVC注解环境搭建
基本步骤 新建Maven项目(Web) 导入依赖 配置web.xml 配置springmvc配置文件 编写Controller 创建view页面 部署并启动Tomcat 开始搭建 新建Maven项目( ...