“Blob文件下载方式” 网站介绍
很多情况下都是通过 window.location.href 来下载文件。这种方式,一般是前后端的登录态是基于 Cookie + Session 的方式,由于浏览器默认会将本地的 cookie 塞到 HTTP 请求首部字段的 Set-Cookie 中,从而实现来带用户的 SessionId,所以,我们也就可以用 window.location.href 来打开一个链接下载文件。
众所周知,还有另一种登录态的处理方式 JWT (JSON Web Token)。这种情况,一般会要求,前端在下载文件的时候在请求首部字段中添加 Token 首部字段。那么,这样一来,我们就不能直接通过 window.location.href 来下载文件。
不过,幸运的是我们有 Blob,它是浏览器端的类文件对象,基于二进制数据,我们可以通过它来优雅地处理文件下载,不限于音视频、PDF、Excel 等等。所以,今天我们就从后端导出文件到 HTTP 协议、非简单请求下的预检请求、以及最后的 Blob 处理文件,了解一番何为其然、如何使其然?
responseType: 'blob' // 这一行是关键,拿到blob数据类型的文件
axios.request({
url: "/getDownloadFile",
method: "post",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
responseType: "blob",
})
.then(res => {
})
通过a标签打开新页面下载文件
console.log("下载文件内容", this.content)
const blob = new Blob([this.content], {type: 'text/plain;charset=utf-8'})
let downloadElement = document.createElement('a');
let href = window.URL.createObjectURL(blob); //创建下载的链接
downloadElement.href = href;
let time = (new Date()).valueOf();
downloadElement.download = '代码库' + time + '.java'; //下载后文件名
document.body.appendChild(downloadElement);
downloadElement.click(); //点击下载
document.body.removeChild(downloadElement); //下载完成移除元素
window.URL.revokeObjectURL(href); //释放掉blob对象
更多相关网站
- 前端案例·程序员的浪漫:流星雨背景
- 8个非常实用的Vue自定义指令
- 前端必看!10 个 Vue3 救命技巧,解决你 90% 的开发难题?
- 是时候使用iframe延迟加载来提升LCP!
- 10个Vue开发技巧「实践」
- JavaScript 事件——“事件类型”中“UI事件”的注意要点
- 网络安全与防范
- vue下载excel文件方法
- 前端分享-少年了解过iframe么
- JavaScript代码嵌入HTML的方法、及两者的在执行流程上的细微区别
- 判断变量是否为数组
- JS如何判断文字被ellipsis了?
- ES6页面假死原因及解决方案
- 网络安全之从原理看懂XSS
- VUE前端编程:如何通过全局对话框引入动态组件
- 一文讲透支付宝沙箱的基本应用
- Js基础3:节点创建
- 32个手写JS,巩固你的JS基础(面试高频)
- 最近发表
-
- 联想推出 IdeaPad 14s / 15s:均为 3399 元,运行 Win11 系统
- 顶配版ThinkPad X1 Carbon评测
- 联想ThinkPad X1 Carbon评测
- lenovo联想 拯救者-14 加装ssd、内存及win10转移到ssd经验谈
- 联想发布新款耳机鼠标等配件:专为ThinkPad X1设计
- 杜比全景音体验,联想K4 Note在印度正式发布
- 3099 元起,联想推出 IdeaPad 15:约10小时续航,预装 Win11系统
- 联想拯救者Y70、小新Pad Pro 2022发布丨拯救者Y70测评体验
- 千元可定制!联想K4 Note印度发布:杜比全景音体验
- 声临其境 联想TAB2 A10平板联手杜比
- 标签列表
-
- serv-u 破解版 (6)
- 极域电子教室2009 (6)
- 6300主题下载 (1)
- oracle11204下载 (1)
- c++论坛 (14)
- huaweiupdateextractor (4)
- thinkphp6下载 (7)
- 前端论坛 (11)
- mysql 时间索引 (13)
- mydisktest_v298 (35)
- unlocker208 (1)
- sql 日期比较 (33)
- document.appendchild (35)
- 头像打包下载 (35)
- 二调符号库 (23)
- oppoa5专用解锁工具包 (8)
- acmecadconverter_8.52绿色版 (25)
- oracle timestamp比较大小 (7)
- chm editor破解版 (7)
- throttlestop防止降频 (9)
- f12019破解 (16)
- 流星蝴蝶剑修改器 (18)
- pygame中文手册 (2)
- 联想杜比音效驱动下载 (10)