kea-react
Version:
Componentes comunes de react
50 lines (39 loc) • 1.72 kB
text/typescript
/**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;
}