博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS操作二进制方法 - blob
阅读量:6847 次
发布时间:2019-06-26

本文共 2329 字,大约阅读时间需要 7 分钟。

主要总结Blob对象属性及作用,通过DEMO介绍Blob对象的应用场景。

js可以通过blob方法直接操作二进制数据。

Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。

创建Blob

var blob = new Blob( dataArr:Array, opt:{type:string})

  • dataArray: 数组,包含了要添加到 Blob 对象中的数据,数据可以是任意多个 ArrayBuffer, ArrayBufferView, Blob, 或者 DOMString 对象。
  • opt:对象,用于设置Blob的属性(如: MIME 类型)

1.创建一个DOMString对象的Blob对象

var a="

l

"var b = new Blob([a],{
type:"text/plain"})复制代码

2.创建一个装满ArrayBuffer对象的Blob对象

var a=new ArrayBuffer(16)var b = new Blob([a],{ type:"text/plain"})复制代码

3.创建一个装满ArrayBufferView对象的Blob对象

var a=new ArrayBuffer(16)var b = new Int16Array(a)复制代码

通过url下载文件

  1. 通过createObjectURL
//axios需要添加responseType:'blob'let blob = new Blob([res.data], {
type: "application/vnd.ms-excel"});let url = window.URL.createObjectURL(blob);window.location.href = url;复制代码
  1. 通过插件file-saver
//axios需要添加responseType:'blob'var blob = new Blob([res.data], {
type: "text/plain;charset=utf-8"});saveAs(blob, "file.txt");复制代码
createDownload("download.txt","download file");function createDownload(fileName, content){    var blob = new Blob([content]);    var link = document.createElement("a");    link.innerHTML = fileName;    link.download = fileName;    link.href = URL.createObjectURL(blob);    document.getElementsByTagName("body")[0].appendChild(link);}复制代码

从 Blob 中提取数据

  1. readAsText()

readAsText 方法可以将 Blob 或者 File 对象转根据特殊的编码格式转化为内容(字符串形式)

这个方法是异步的,也就是说,只有当执行完成后才能够查看到结果,如果直接查看是无结果的,并返回undefined

也就是说必须要挂载 实例下的 onload 或 onloadend 的方法处理转化后的结果

当转化完成后, readyState 这个参数就会转换 为 done 即完成态, event("loadend") 挂载的事件会被触发,并可以通过事件返回的形参得到中的 FileReader.result 属性得到转化后的结果

// 一个文件上传的回调 function onChange(event) {  var file = event.target.files[0];  var reader = new FileReader();  reader.onload = function(event) {    // 文件里的文本会在这里被打印出来    console.log(event.target.result)  };  reader.readAsText(file,'UTF-8');}复制代码
  1. readAsDataURL()

readAsDataURL 方法会读取指定的 Blob 或 File 对象。读取操作完成的时候,readyState会变成已完成DONE,并触发 loadend 事件,同时 result 属性将包含一个data:URL格式的字符串(base64编码)以表示所读取文件的内容。

//
//Image preview...function previewFile() { var preview = document.querySelector('img'); var file = document.querySelector('input[type=file]').files[0]; var reader = new FileReader(); reader.addEventListener("load", function () { preview.src = reader.result; }, false); if (file) { reader.readAsDataURL(file); }}复制代码

转载地址:http://jfmul.baihongyu.com/

你可能感兴趣的文章
简单演示django使用二
查看>>
墨菲定律(侥幸定律)
查看>>
DNS之智能DNS二(Windows)
查看>>
批量修改文件后缀名的方法(当前目录及子目录)
查看>>
Linux Shell脚本攻略
查看>>
[信息图]手机进化史
查看>>
我的友情链接
查看>>
“我来管管看”系列:采购误差缘何而来?
查看>>
关于iSCSI的一些介绍
查看>>
iptables 学习笔记
查看>>
MongoDB与内存
查看>>
tcpdump抓取mysql报文
查看>>
ubuntu下的中文搜索sphinx的安装配置
查看>>
三.Object-C 方法,封装 (下)
查看>>
2003年9月全国计算机等级考试二级C语言笔试试题及答案
查看>>
重复制造轮子之——字节数组写入文件
查看>>
IMP 导入表结构到指定用户
查看>>
windows下FTP连接linux简单演示-dos操作
查看>>
redhat6启动U盘安装
查看>>
H3C 交换机 和windows NPS结合实现内网802.1X认证
查看>>