Estoy tratando de crear una selección/descarga de archivos.
Uso JSZip para crear el archivo .zip y Filesaver.js para la parte de descarga.
Funciona bien con el tipo MIME 'texto/simple' tanto en Firefox como en Chrome, pero no funciona con el blob devuelto por JSZip, que es un MIME 'aplicación/zip' en Firefox.
Aquí están los dos resultados de blob console.log en Firefox:
Aquí está el código:
function handleDownloadRequest(ids){ //Define files urls //Some code to fill the fileUrls array var fileUrls = [] ... //Download & zip const zip = new JSZip(); let count = 0; const zipFilename = 'Files_Archive' + new Date().toLocaleDateString() +'.zip' fileUrls.forEach(async function (url) { console.log(url) const urlArr = url.split('/'); const filename = urlArr[urlArr.length - 1]; try { const file = await JSZipUtils.getBinaryContent(url) zip.file(filename, file, { binary: true }); count++; if (count === fileUrls.length) { zip.generateAsync({ type: 'blob' }) .then(function (content) { //Working /*let blob = new Blob(["Hello, world!"], { type: "text/plain;charset=utf-8" }); console.log(blob) FileSaver.saveAs(blob, "hello world.txt");*/ //Not working on Firefox console.log(content) FileSaver.saveAs(content, zipFilename); }); } } catch (err) { console.log(err); } }); }Enla documentación de JSZip hay una parte en la que hablan de un comportamiento diferente de la función saveAs en Firefox, pero eso no me ayudó:
Debajo del capó, el polyfill usa el saveAs nativo de la API FileSaver (en Chrome e IE10+) o usa una URL Blob (en Firefox).
Cualquier pista será muy apreciada.