base64转到Blob对象

参考: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;
}

猜你喜欢

转载自blog.csdn.net/weixin_42582742/article/details/83898345