Resumen:
Tengo una lista de archivos HTML que un usuario puede descargar a través del navegador. Espero poder agrupar estos archivos individuales en un solo archivo GZIP y tener una sola descarga en comparación con los múltiples archivos que se descargan actualmente cuando se seleccionan varios.
El resultado real es un error que no sé cómo resolver:
myExportUtility.js?678e:88 Uncaught TypeError: Failed to execute 'createObjectURL' on 'URL': Overload resolution failed. at exportBundledFiles (myExportUtility.js?678e:88:1)Las funciones que se utilizan son:
const retrieveTextBlobs = (textToWrite, fileNameToSaveAs) => { const textFileAsBlob = new Blob([textToWrite], {type: fileType.HTML}); return textFileAsBlob; }; const exportBundledFiles = (fileList) => { const gzipFile = createGzip(fileList); const downloadLink = document.createElement("a"); console.log(downloadLink); console.log(gzipFile); downloadLink.href = window.webkitURL.createObjectURL(gzipFile); };Estas dos funciones están siendo utilizadas por una función de exportación masiva:
handleBulkExport = () => { let blobs = []; this.state.selectedHTMLDocs.forEach(doc => { const raw = new DOMParser().parseFromString(doc.template, "text/html"); blobs.push(retrieveTextBlobs(raw.documentElement.textContent, `${doc.name}.html`)); }); exportBundledFiles(blobs); };Producción:
console.log(downloadLink) -> <a></a>
console.log(gzipFile) -> Gzip {_opts: Array(2), _chunkSize: 16384, _readableState: ReadableState, readable: true, _events: {…}, …}
He tratado de ver otras preguntas, pero todas las preguntas son sobre un tema diferente al de intentar descargar blobs html de forma masiva en un solo archivo gzip.
¿Hay alguna manera de hacer esto en javascript? Esto es para una aplicación de reacción.