浏览器中下载的一些总结
通过 http 请求返回的 json 数据,如何下载到本地作为调试的 mock 数据?
二进制文件等部分涉及
浏览器中的下载一般都会涉及到二进制,浏览器中常见的二进制以及特殊的数据相关的用的最多Blob,DataURL,Base64 ,ObjectURL
Blob是浏览器端的类文件对象,存储着二进制的数据,其接受两个参数,第一个参数,array是一个由ArrayBuffer,ArrayBufferView,Blob,DOMString等对象构成的Array,或者其他类似对象的混合体,它将会被放进Blob。DOMStrings会被编码为UTF-8。第二个参数是文件的MIME类型Data URL格式1
2
3
4
5// 格式
data:[<mediatype>][;base64],<data>
// 浏览器地址栏可以直接访问
data:text/html,<h1>Hello%2C%20World!</h1>Base64最常用的场景一般是将图片压缩处理,但是编码之后存储较大ObjectURL浏览器的URL对象生成一个地址来表示Blob数据1
URL.createObjectURL(new Blob('hello, world'.split('')))
具体下载思路
一般接口返回值都是 json 结构,所以可以先将其 JSON.stringify 序列化为 JSON 字符串,想要将接口返回的数据下载,有两种思路
- 将
JSON字符串文本转换为Data URL - 将
JSON字符串文本转换为Blob,再由Blob创建ObjectURL - 最终都通过
a标签的模拟点击来下载
具体伪代码:
1 | |
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!