Obtengo el archivo en una cadena:
const r = new FileReader() r.readAsText(file, 'UTF-8') r.onload = (evt) => { this.file = evt.target.result }; Después de cargar un archivo Zip, de texto o de imagen, mi cadena se ve así: data:text/plain;base64,VTJGc.....
¿Cómo puedo revertir readAsText y obtener un archivo descargable?
La "cadena" que obtuvo es una URL Base64 (que puede copiar y pegar en una nueva pestaña del navegador y ver el contenido), y en realidad simplificó la descarga del archivo, así que no invierta el proceso.
Una forma es crear un elemento de enlace en su HTML y hacer clic en él:
El ejemplo no funcionará porque está en una inserción que tiene permisos limitados.
function download(b64, name) { const a = document.createElement("a"); a.href = b64; a.download = name; document.body.appendChild(a); a.click(); } download("data:text;base64,SGVsbG8sIHdvcmxkIQ==", "helloworld.txt"); Si realmente desea revertir el proceso, puede decodificar fácilmente Base64 con atob() :
const decode = str => atob(str.replace(/^data:\w+;base64,/, "")); // remove `data:text;base64,` console.log(decode("data:text;base64,SGVsbG8sIHdvcmxkIQ=="));