simple-pure-utils
Version:
Funciones puras para manipulación de objetos, arreglos, promesas y observables
77 lines • 6.11 kB
JavaScript
/**Convierte un Blob a una cadena base64 */
export function blobToBase64(archivo) {
return new Promise(resolve => {
const reader = new FileReader();
reader.onload = function () {
const dataUrl = reader.result;
if (typeof dataUrl != "string") {
throw new Error("No se pudo convertir a base64 ya que el FileReader devolvio un dataUrl que no es string");
}
//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);
});
}
/**Decodifica una cadena a base64 */
export function base64ToString(base64) {
if (typeof (atob) != "undefined") {
return atob(base64);
}
else {
return Buffer.from(base64, 'base64').toString();
}
}
/**Codifica una cadena a base64 */
export function stringToBase64(str) {
if (typeof (btoa) != "undefined") {
return btoa(str);
}
else {
return Buffer.from(str).toString('base64');
}
}
/**Convierte una cadena base64 a un blob */
export function base64ToBlob(base64, contentType) {
//Este codigo fue tomado de
//http://stackoverflow.com/questions/16245767/creating-a-blob-from-a-base64-string-in-javascript#16245768
contentType = contentType || '';
var byteCharacters = base64ToString(base64);
return stringToBlob(byteCharacters, contentType);
}
/**Convierte una cadena binaria en un blob */
export function stringToBlob(value, contentType) {
const sliceSize = 512;
const byteArrays = [];
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;
}
/**Convierte un blob a una cadena */
export function blobToString(value) {
const reader = new FileReader();
return new Promise((resolve, reject) => {
reader.onload = function () {
if (typeof reader.result == "string") {
resolve(reader.result);
}
else {
reject(new Error("No se pudo convertir a base64 ya que el FileReader devolvio un dataUrl que no es string"));
}
};
reader.readAsText(value);
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZTY0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Jhc2U2NC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSwyQ0FBMkM7QUFDM0MsTUFBTSxVQUFVLFlBQVksQ0FBQyxPQUFhO0lBQ3RDLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDekIsTUFBTSxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxNQUFNLENBQUMsTUFBTSxHQUFHO1lBQ1osTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUM5QixJQUFJLE9BQU8sT0FBTyxJQUFJLFFBQVEsRUFBRTtnQkFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyx5RkFBeUYsQ0FBQyxDQUFDO2FBQzlHO1lBRUQsNkRBQTZEO1lBQzdELElBQUksT0FBTyxJQUFJLE9BQU87Z0JBQ2xCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUVoQixNQUFNLFlBQVksR0FBRyxTQUFTLENBQUE7WUFDOUIsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxHQUFHLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQTtZQUNyRixPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBQ0YsTUFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDLENBQUMsQ0FBQztBQUNQLENBQUM7QUFFRCxvQ0FBb0M7QUFDcEMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFjO0lBQ3pDLElBQUcsT0FBTSxDQUFDLElBQUksQ0FBQyxJQUFJLFdBQVcsRUFBRTtRQUM1QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUN2QjtTQUFNO1FBQ0gsT0FBTyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxRQUFRLENBQUMsQ0FBQyxRQUFRLEVB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