不幸的是,您無法從Cordova相機插件中提取BLOB
。
獲得BLOB
的方法是將base64編碼的字符串轉換爲BLOB
並使用它。
下面是一個方法(符合ES6),允許您將BLOB
和sliceSize轉換爲更高的內存效率。
/**
* Turn base 64 image into a blob, so we can send it using multipart/form-data posts
* @param b64Data
* @param contentType
* @param sliceSize
* @return {Blob}
*/
private getBlob(b64Data:string, contentType:string, sliceSize:number= 512) {
contentType = contentType || '';
sliceSize = sliceSize || 512;
let byteCharacters = atob(b64Data);
let byteArrays = [];
for (let offset = 0; offset < byteCharacters.length; offset += sliceSize) {
let slice = byteCharacters.slice(offset, offset + sliceSize);
let byteNumbers = new Array(slice.length);
for (let i = 0; i < slice.length; i++) {
byteNumbers[i] = slice.charCodeAt(i);
}
let byteArray = new Uint8Array(byteNumbers);
byteArrays.push(byteArray);
}
let blob = new Blob(byteArrays, {type: contentType});
return blob;
}