Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
Descarga el archivo grande con trozos

Creé una prueba como esta:

 async function testDownload() { try{ var urls = ['https://localhost:54373/analyzer/test1','https://localhost:54373/analyzer/test2'] var fullFile = new Blob(); for (let x = 0; x < urls.length; x++){ await fetch(urls[x]).then((res) => { if (!res.ok || res.status !== 200) { throw('Download failed'); } return res.blob(); }).then(data => fullFile = new Blob([fullFile, data])); } let url = window.URL.createObjectURL(fullFile); let a = document.createElement('a'); a.href = url; a.download = "WTF.ini"; a.click(); } catch(e){console.log(e)}; }

El problema es: esto creó el enlace de descarga después de recibir el resultado de las URL. Entonces obtengo el archivo instantáneo https://prnt.sc/-zSK3Y7QLIVT

Mi pregunta es: ¿Cómo hago esto con un porcentaje de descarga? Así: https://prnt.sc/sdvxMc83qqeS

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe dividir en fragmentos de tamaño conocido (por ejemplo, 4 kb cada uno) y, conociendo el tamaño total del archivo y el tamaño del fragmento, puede calcular el porcentaje descargado cada vez que finaliza un fragmento.

 function PercentageCalculatorFactory(totalFileSizeInBytes){ var totalDownloaded = 0; const chunkSize = 4096; return function onChunkDownload(){ totalDownloaded ++; var sizeDownloaded = totalDownloaded * chunkSize; return sizeDownloaded / totalFileSize * 100; } } //usage var percCalculator = PercentageCalculatorFactory(10000);

// obtenga el tamaño del archivo usando una API que sirve algunos metadatos sobre el archivo, en este caso, es posible que se necesite el tamaño pero el nombre, etc.

 async function testDownload() { try{ var urls = ['https://localhost:54373/analyzer/test1','https://localhost:54373/analyzer/test2'] var fullFile = new Blob(); for (let x = 0; x < urls.length; x++){ await fetch(urls[x]).then((res) => { if (!res.ok || res.status !== 200) { throw('Download failed'); } var newPercentage = percCalculator(); //do something with percentage console.log( newPercetage ); return res.blob(); }).then(data => fullFile = new Blob([fullFile, data])); } let url = window.URL.createObjectURL(fullFile); let a = document.createElement('a'); a.href = url; a.download = "WTF.ini"; a.click(); } catch(e){console.log(e)}; }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda