UNPKG

kea-react

Version:

Componentes comunes de react

50 lines (39 loc) 1.72 kB
/**Convierte un Blobk a una cadena base64 */ export function BlobToBase64(archivo: Blob): Promise<string> { return new Promise(resolve => { const reader = new FileReader(); reader.onload = function () { const dataUrl = reader.result; //Caso especial, si el blob viene vacio esto devuelve "data:" if (dataUrl == "data:") resolve(""); const base64Prefix = "base64," const base64 = dataUrl.substring(dataUrl.indexOf(base64Prefix) + base64Prefix.length) resolve(base64); }; reader.readAsDataURL(archivo); }); } /**Convierte una cadena base64 a un blob */ export function Base64ToBlob(base64: string, contentType?: string): Blob { //Este codigo fue tomado de //http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript#16245768 contentType = contentType || ''; var byteCharacters = atob(base64); return stringToBlob(byteCharacters, contentType); } export function stringToBlob(value: string, contentType?: string): Blob { const sliceSize = 512; const byteArrays: Uint8Array[] = []; for (let offset = 0; offset < value.length; offset += sliceSize) { const slice = value.slice(offset, offset + sliceSize); const byteNumbers = new Array(slice.length); for (let i = 0; i < slice.length; i++) { byteNumbers[i] = slice.charCodeAt(i); } var byteArray = new Uint8Array(byteNumbers); byteArrays.push(byteArray); } var blob = new Blob(byteArrays, { type: contentType }); return blob; }