1. 程式人生 > >base64轉到Blob物件

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;
}