## BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器
> 创建Blob对象的方法有几种,可以调用Blob构造函数,还可以使用一个已有Blob对象上的slice()方法切出另一个Blob对象,还可以调用canvas对象上的toBlob方法。
Blob对象有两个只读属性:
* size:二进制数据的大小,单位为字节。
* type:二进制数据的MIME类型,全部为小写,如果类型未知,则该值为空字符串。
在Ajax操作中,如果xhr.responseType设为blob,接收的就是二进制数据。
### Blob 构造函数生成blob对象
Blob构造函数,接受两个参数。
第一个参数是一个包含实际数据的数组,第二个参数是数据的类型,这两个参数都不是必需的
数组元素可以是任意多个的ArrayBuffer,ArrayBufferView (typed array), Blob,或者 DOMString对象。
例如:
```
var arr = ['<h1>hello world</h1>'];
var blob = new Blob(arr, { "type" : "text/xml" }); // the blob
console.log(blob);
```
#### 用JS在浏览器中创建下载文件
HTML5中给a标签增加了一个download属性,只要有这个属性,点击这个链接时浏览器就不在打开链接指向的文件,而是改为下载(目前只有chrome、firefox和opera支持)。
下载时会直接使用链接的名字来作为文件名,但是是可以改的,只要给download加上想要的文件名即可,如:`download="not-a-file.js"`。
### **以上的方法只适合用在文件是在服务器上的情况**
如果在浏览器端js生成的内容,想让浏览器进行下载要如何办到呢?DataURI可以实现这个效果,但是DataURI的文件类型被限制了,我们这里可以变通一下实现blob对象。
```
<a id="aLink">下载</a>
<script type="text/javascript">
function downloadFile (el, fileName, content) {
var aLink = document.querySelector(el);
var blob = new Blob([content]);
aLink.download = fileName;
aLink.href = URL.createObjectURL(blob);
}
document.querySelector('#aLink').addEventListener('click',function () {
downloadFile('#aLink', 'hello.txt', '<h1>hello world</h1>');
})
</script>
```
> 其他概念 等用到再记
- vue-quill-editor
- 添加自定义上传图片功能(上传至服务器或七牛云)
- 微信web JSSDK
- 常用CSS
- 实现单行、多行文本溢出显示省略号
- 滤镜(filter)
- GIT
- win7 设置自动保存帐号密码
- git 官方图形界面GUI 汉化
- 阿里OSS
- 阿里云OSS 浏览器直传
- uni-app H5直传OSS
- html2canvas无法使用OSS图片的问题
- 常用NPM包
- 日期格式化 - dateformat
- H5-API
- 文件读取器 - FileReader
- 二进制大对象 - Blob
- JS-常用 功能
- 检验手机号
- 检验身份证
- 检验是否是汉字
- 获取浏览器参数
- 手机类型判断
- 生成随机字符串
- wordpress
- 下载-安装
- 创建一个新的主题(模板)
- ueditor直传OSS
- RESTFul API
- 软件工具
- Cmder 代替windows cmd的好玩意
- H5页面控制台(vconsole)
- ThinkPHP
- Linux系统LNMP集成环境
- 安装命令
- 安装PHP多版本
- 管理虚拟机
- 安装composer
- 设置根目录为public无效的问题
- 路由
- TP5 route 无法生效
- 路由添加版本号