instalar habilitar gratis descargar desactivar como chrome celular automaticamente archivo activar javascript url download jszip

habilitar - MĂșltiples enlaces de descarga a un archivo zip antes de descargar javascript



instalar javascript (2)

Puede usar JSZip.js , XMLHttpRequest() , Array.prototype.map() , Promise.all() para crear un archivo .zip cuando se hayan completado todas las solicitudes de archivos; use el elemento <a> con el atributo de download establecido en objectURL del archivo .zip en la función JSZip .generateAsync() , haga clic en a elemento para mostrar el cuadro de diálogo Save File con el Save File .zip creado como archivo descargable.

<head> <script src="jszip.js"></script> <script> window.onload = function() { var zip = new JSZip(); var a = document.querySelector("a"); var urls = ["a.html", "b.html"]; function request(url) { return new Promise(function(resolve) { var httpRequest = new XMLHttpRequest(); httpRequest.open("GET", url); httpRequest.onload = function() { zip.file(url, this.responseText); resolve() } httpRequest.send() }) } Promise.all(urls.map(function(url) { return request(url) })) .then(function() { console.log(zip); zip.generateAsync({ type: "blob" }) .then(function(content) { a.download = "folder" + new Date().getTime(); a.href = URL.createObjectURL(content); a.innerHTML = "download " + a.download; }); }) } </script> </head> <body> <a href="" download>download</a> </body>

plnkr http://plnkr.co/edit/baPtkILg927DtJfh4b5Y?p=preview

¿Es posible, en JavaScript, tener múltiples URL de descarga enviadas en un archivo zip y ese archivo zip se puede descargar. Entonces, más o menos, en mi página web, hay un botón que, al hacer clic, descarga un archivo zip de todos los archivos de las URL de descarga comprimidos en el zip.

Creo que necesitaría usar jszip o alguna herramienta como esa. ¿Es esto posible y hay algún consejo sobre por dónde empezar?


Recientemente tuve que resolver el mismo problema y encontré una solución usando JSZipUtils .

La solución se puede encontrar aquí http://plnkr.co/edit/vWARo0dXbkgzmjyoRNi0?p=preview

Tengo dos archivos que me gustaría comprimir y descargar a través del navegador de los usuarios y llamo a la función getBinaryContent(path, callback) en ambos archivos. La ruta aquí es donde se almacena el archivo.

Los dos archivos son un archivo .wav y un archivo .json. Cada uno de ellos debe tratarse de manera diferente y, por lo tanto, debe usar {base64:true,binary:true} para el archivo .wav y {binary:true} para el archivo json como argumento para el archivo de función de JSZip .

El código también se puede encontrar aquí

var file_confirmation=[false,false]; var file_name=["test1.wav","test.json"]; var urlList =["test.wav","test.json"]; var filenameSave ="myZip"; function zipFiles(id,urls) { zip = new JSZip(); JSZipUtils.getBinaryContent(urls[0],function (err, data) { if(!err) { var dic={base64:true,binary:true}; //WAV File Encoding zip.file(file_name[0], data, dic); file_confirmation[0]=true; downloadZipIfAllReady(id); } }); JSZipUtils.getBinaryContent(urls[1],function (err, data) { if(!err) { var dic={binary:true}; //JSON File Encoding zip.file(file_name[1], data, dic); file_confirmation[1]=true; downloadZipIfAllReady(id); } }); } function downloadZipIfAllReady(id) { if(file_confirmation.every(function(element, index, array) {return element;})) { zip.generateAsync({type:"blob"}) .then(function(content) { var a = document.querySelector("#"+id); a.download = filenameSave; a.href = URL.createObjectURL(content); a.click(); }); } } $(document).ready(function() { zipFiles("a_id",urlList); })