base64轉到Blob物件
阿新 • • 發佈:2018-11-14
參考: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
它是以下兩個值中的一個: “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;
}