关于blob:前端blob方式导出Excel

封装axios: import axios from "axios";const server = axios.create({ timeout: 20000, withCredentials: true, headers: { "Content-Type": "application/json; charset=utf-8" },});// 申请拦截器server.interceptors.request.use( function (config) { // 在发送申请之前做些什么 let userinfo = JSON.parse(window.localStorage.getItem("userinfo")); if (userinfo) { config.headers.Authorization = userinfo.token; } return config; }, function (error) { // 对申请谬误做些什么 return Promise.reject(error); });// 响应拦挡server.interceptors.response.use( function (response) { // 如果返回的状态码为200,阐明接口申请胜利,能够失常拿到数据否则的话抛出谬误 if (response.status === 200) { // 未登录或者token过期 if (response.data.err === 1) { localStorage.removeItem("userinfo"); setTimeout(() => { router.push("/login"); }, 1000); } else if (response.data.err === 10) { setTimeout(() => { router.push("/nopower"); }, 1000); } return Promise.resolve(response); } else { return Promise.reject(response); } }, function (error) { if (error.response.status) { switch (error.response.status) { case 401: break; case 404: Message.error("网络申请不存在"); break; // 其余谬误,间接抛出谬误提醒 case 500: if (error.response.data.err === 1) { localStorage.removeItem("userinfo"); setTimeout(() => { router.push("/login"); }, 1000); } break; default: Message.error(error.response.data.msg); } return Promise.reject(error.response.data.msg); } });server.adornUrl = (actionName) => { // 非生产环境 && 开启代理, 接口前缀对立应用[/proxyApi/]前缀做代理拦挡! return "/api" + actionName;};export default server;申请接口: ...

August 10, 2022 · 2 min · jiezi

关于blob:聊聊JS的二进制家族BlobArrayBuffer和Buffer

注释事实上,前端很少波及对二进制数据的解决,但即便如此,咱们偶然总能在角落里看见它们的身影。 明天咱们就来聊一聊前端的二进制家族:Blob、ArrayBuffer和Buffer 概述Blob: 前端的一个专门用于反对文件操作的二进制对象ArrayBuffer:前端的一个通用的二进制缓冲区,相似数组,但在API和个性上却有诸多不同Buffer:Node.js提供的一个二进制缓冲区,罕用来解决I/O操作Blob咱们首先来介绍Blob,Blob是用来反对文件操作的。简略的说:在JS中,有两个构造函数 File 和 Blob, 而File继承了所有Blob的属性。 所以在咱们看来,File对象能够看作一种非凡的Blob对象。在前端工程中,咱们在哪些操作中能够取得File对象呢? 请看: (备注:目前 File API标准的状态为Working Draft) 咱们下面说了,File对象是一种非凡的Blob对象,那么它天然就能够间接调用Blob对象的办法。让咱们看一看Blob具体有哪些办法,以及可能用它们实现哪些性能 Blob实战通过window.URL.createObjectURL办法能够把一个blob转化为一个Blob URL,并且用做文件下载或者图片显示的链接。 Blob URL所实现的下载或者显示等性能,仅仅能够在单个浏览器外部进行。而不能在服务器上进行存储,亦或者说它没有在服务器端存储的意义。 上面是一个Blob的例子,能够看到它很短 blob:d3958f5c-0777-0845-9dcf-2cb28783acaf和简短的Base64格局的Data URL相比,Blob URL的长度显然不可能存储足够的信息,这也就意味着它只是相似于一个浏览器外部的“援用“。从这个角度看,Blob URL是一个浏览器自行制订的一个伪协定 Blob下载文件咱们能够通过window.URL.createObjectURL,接管一个Blob(File)对象,将其转化为Blob URL,而后赋给 a.download属性,而后在页面上点击这个链接就能够实现下载了 <!-- html局部 --><a id="h">点此进行下载</a><!-- js局部 --><script> var blob = new Blob(["Hello World"]); var url = window.URL.createObjectURL(blob); var a = document.getElementById("h"); a.download = "helloworld.txt"; a.href = url;</script>备注:download属性不兼容IE, 对IE可通过window.navigator.msSaveBlob办法或其余进行优化(IE10/11) 运行后果 Blob图片本地显示window.URL.createObjectURL生成的Blob URL还能够赋给img.src,从而实现图片的显示 <!-- html局部 --><input type="file" id='f' /><img id='img' style="width: 200px;height:200px;" /><!-- js局部 --><script> document.getElementById('f').addEventListener('change', function (e) { var file = this.files[0]; const img = document.getElementById('img'); const url = window.URL.createObjectURL(file); img.src = url; img.onload = function () { // 开释一个之前通过调用 URL.createObjectURL创立的 URL 对象 window.URL.revokeObjectURL(url); } }, false);</script>运行后果 ...

September 13, 2021 · 2 min · jiezi

关于blob:Js之Blob类型以及文件流下载流程

什么是blob?以下是MDN的官网解释: Blob 对象示意一个不可变、原始数据的类文件对象。它的数据能够按文本或二进制的格局进行读取,也能够转换成 ReadableStream 来用于数据操作。 Blob 示意的不肯定是JavaScript原生格局的数据。File 接口基于Blob,继承了 blob 的性能并将其扩大使其反对用户零碎上的文件。要从其余非blob对象和数据结构一个 Blob,请应用 Blob() 构造函数。实际上 file 对象只是 blob 对象的一个更具体的版本,blob 存储着大量的二进制数据,并且 blob 的 size 和 type 属性,都会被 file 对象所继承。所以, 在大多数状况下,blob 对象和 file 对象能够用在同一个中央,例如,能够应用 FileReader 借口从 blob 读取数据,也能够应用 URL.createObjectURL() 从 blob 创立一个新的 URL 对象。 blob的创立Blob() 构造函数容许通过其它对象创立 Blob 对象。比方,用字符串构建一个 blob var debug = {hello: "world"};var blob = new Blob([JSON.stringify(debug, null, 2)], {type : 'application/json'});构造函数,承受两个参数,第一个为一个数据序列,能够是任意格局的值,例如,任意数量的字符串,Blobs 以及 ArrayBuffers。第二个参数,是一个蕴含了两个属性的对象,其两个属性别离是: type -- MIME 的类型。 endings -- 决定 append() 的数据格式,(数据中的 \n 如何被转换)能够取值为 "transparent" 或者 "native"(t 的话不变,n 的话按操作系统转换;t* 为默认) 。 ...

January 3, 2021 · 1 min · jiezi

关于blob:前端面试每日-31-第624天

明天的知识点 (2020.12.30) —— 第624天 (我也要出题)[html] 应用button当按钮和应用div当按钮有什么区别?[css] 你晓得Less刚进去时是用哪种语言编写的吗?[js] 如何创立视频文件的blob?[软技能] 说说你对图片压缩比的了解《论语》,曾子曰:“吾日三省吾身”(我每天屡次检查本人)。前端面试每日3+1题,以面试题来驱动学习,每天提高一点!让致力成为一种习惯,让奋斗成为一种享受!置信 保持 的力量!!!欢送在 Issues 和敌人们一起探讨学习! 我的项目地址:前端面试每日3+1【举荐】欢送跟 jsliang 一起折腾前端,零碎整顿前端常识,目前正在折腾 LeetCode,打算买通算法与数据结构的任督二脉。GitHub 地址 微信公众号欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个Star, 同时欢送微信扫码关注 前端剑解 公众号,并退出 “前端学习每日3+1” 微信群互相交换(点击公众号的菜单:交换)。 学习不打烊,充电加油只为遇到更好的本人,365天无节假日,每天早上5点纯手工公布面试题(死磕本人,愉悦大家)。心愿大家在这虚夸的前端圈里,放弃沉着,保持每天花20分钟来学习与思考。在这变幻无穷,类库层出不穷的前端,倡议大家不要等到找工作时,才狂刷题,提倡每日学习!(不忘初心,html、css、javascript才是基石!)欢送大家到Issues交换,激励PR,感激Star,大家有啥好的倡议能够加我微信一起交换探讨!心愿大家每日去学习与思考,这才达到来这里的目标!!!(不要为了谁而来,要为本人而来!)交换探讨欢送大家前来探讨,如果感觉对你的学习有肯定的帮忙,欢送点个[Star]

December 30, 2020 · 1 min · jiezi