He usado JSzip para mi proyecto para proporcionar descargas de archivos ZIP. Encontré un requisito que requiere que varios archivos ZIP estén dentro de un solo archivo ZIP. He intentado varias formas de lograr esto, pero aún no puedo avanzar, ya que solo descarga un ZIP vacío
He adjuntado mi código aquí.
downLoadFilesAsZip = async(item) => { const zip1 = new JSZip(); for (const index in item.docLinks) { const url = item.docLinks[index]; let linkParts = url.split("?"); let filename = linkParts[0].substring(linkParts[0].lastIndexOf('/')+1); console.log("indexFiles",index); const response = await axios({ url: url, method: 'GET', responseType: 'blob', headers: { 'Content-Type': 'application/json', } }); zip1.file(filename,response.data); } await zip1.generateAsync({ type: 'blob' }) .then((blob) => { saveAs(blob, `${item.type}/${item.name}.zip`) }) } downLoadAllAsZip = () => { { this.state.docGroups.length !== 0 && this.state.docGroups.map((item) => { if(item.docLinks !== null && item.docLinks.length > 0){ return( this.downLoadFilesAsZip(item) ); } }) } }Este código a continuación proporciona de 10 a 15 descargas de archivos zip por separado
Y tengo un botón donde paso mi entrada a esta función downLoadAllAsZip()
Está bien tener varias carpetas en lugar de múltiples zip también, pero tiene que estar dentro de un solo archivo ZIP.