参考:link.
表示二进制数据的编码方式。Base64
Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。
Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。
在其他应用程序中,也常常需要把二进制数据编码为适合放在URL(包括隐藏表单域)中的形式。此时,采用Base64编码具有不可读性,需要解码后才能阅读。
存储二进制文件的字段类型==Blob ==
Blob (binary large object),二进制大对象,是一个可以存储二进制文件的容器。
在计算机中,Blob常常是数据库中用来存储二进制文件的字段类型。
Blob是一个大文件,典型的Blob是一张图片或一个声音文件,由于它们的尺寸,必须使用特殊的方式来处理(例如:上传、下载或者存放到一个数据库)。
File 接口基于Blob,继承 blob功能并将其扩展为支持用户系统上的文件。你可以通过 Blob() 构造函数创建一个Blob对象。
var aBlob = new Blob( array, options );
参数:
1.array 是一个由ArrayBuffer, ArrayBufferView, Blob, DOMString 等对象构成的 Array ,或者其他类似对象的混合体,它将会被放进 Blob。DOMStrings会被编码为UTF-8。
2.options 是一个可选的BlobPropertyBag字典,它可能会指定如下两个属性:
type:默认值为 “”,它代表了将会被放入到blob中的数组内容的MIME类型。
endings:默认值为"transparent",用于指定包含行结束符\n的字符串如何被写入。
它是以下两个值中的一个: “native”:代表行结束符会被更改为适合宿主操作系统文件系统的换行符,
或者 “transparent”,代表会保持blob中保存的结束符不变
var aFileParts = ['<a id="a"><b id="b">hey!</b></a>']; // 一个包含DOMString的数组
var oMyBlob = new Blob(aFileParts, {type : 'text/html'}); // 得到 blob
base64转到Blob对象
//b64Data--有base64编码的二进制数据。
//contentType=‘image/png’
function b64toBlob(b64Data, contentType, sliceSize) {
contentType = contentType || '';
sliceSize = sliceSize || 512;
var byteCharacters = atob(b64Data);
//该atob函数将base64编码的字符串解码为一个新字符串,其中包含二进制数据每个字节的字符。
var byteArrays = [];
for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
var slice = byteCharacters.slice(offset, offset + sliceSize);
var byteNumbers = new Array(slice.length);
//通过使用.charCodeAt字符串中每个字符的方法应用它来创建一个字节值数组。
for (var i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
//将此字节值数组转换为实际类型的字节数组,方法是将其传递给Uint8Array构造函数。
var byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
//创建一个blob:包含此数据的URL,并将其显示给用户。
var blob = new Blob(byteArrays, { type: contentType });
return blob;
}