Deseo descargar la matriz de imágenes como un archivo zip y lo estoy intentando con jszip. Desafortunadamente, el archivo zip que se descarga contiene 2 documentos, cada uno con la cadena de URL en lugar de la imagen real. ¿Qué hice mal?
las photos son una matriz de URL de medios estáticos como se muestra a continuación
[ "/trap-camera-auto-curation/static/media/tree.2da1e271.jpeg", "/trap-camera-auto-curation/static/media/sunset.a4ff3009.jpeg" ] <button onClick={() => handleDownload(props.shortlisted)} > Download </button> const handleDownload = (photos) => { const zip = require("jszip")(); photos.forEach((photo, index) => { zip.file(index, photo); }); zip.generateAsync({ type: "blob" }).then((content) => { saveAs(content, "example.zip"); }); };La URL debe convertirse a contenido binario antes de agregarse al zip.
const handleDownload = (photos) => { const zip = require("jszip")(); let count = 0; photos.forEach((photo, index) => { const fileName = photo .replace(/[\/]/gi, "") .replace("trap-camera-auto-curationstaticmedia", ""); JSZipUtils.getBinaryContent(photo, function (err, data) { zip.file(fileName, data, { binary: true }); count++; if (count === photos.length) { zip.generateAsync({ type: "blob" }).then(function (content) { saveAs(content, "auto-curation-photos.zip"); }); } }); }); };