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

116
Vistas
No se pueden descargar varios archivos de direcciones URL prefirmadas de S3 con JS

Antes de comenzar con la pregunta, he revisado varias respuestas de stackoverflow sobre preguntas similares (incluidas las que se han hecho y no se han respondido hasta ahora). También he revisado uno de los artículos medianos. Por lo tanto, he hecho un poco de investigación.

He estado tratando de descargar varios archivos usando direcciones URL preestablecidas. El siguiente código funcionaba hace unos días (esto puede sonar familiar;)) pero actualmente, solo puedo descargar un archivo que también es aleatorio. A veces se descarga el primer archivo y otras veces el último. El código se proporciona a continuación:

 downloadItem() { let urls = []; for(let item of this.selectedRowsData) { //calling the service to fetch the presigned url this.dataService.getPresignedToDownloadAll( item.value, item.id).subscribe((res) => { urls.push(res); this.download(urls); /**if(urls.length === selectedRowData.length) { this.download(urls); }**/ //have tried this code too where I just invoke download only once when I have all the presigned urls }); } } download(urls: any) { var self = this; var url = urls.pop(); setTimeout(function(){ self.snackBarService.loadComponent({ isSuccess: true, message: MESSAGES.downloadInProgress, }); var a = document.createElement('a'); a.setAttribute('href', url); document.body.appendChild(a); a.setAttribute('download', ''); a.setAttribute('target', '_self'); a.click(); // a.remove(); }, 1000) }

Cualquier ayuda es muy apreciada.

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

0

No pude descargar las múltiples imágenes de las URL prefirmadas en la misma pestaña del navegador, que es lo que estaba tratando de hacer con a.setAttribute('target', '_self');

Pero pude hacer que funcionara configurando el objetivo como _blank, que abre una nueva pestaña pero cierra las pestañas abiertas una vez que finaliza la descarga. Aunque esta no es una gran experiencia para el usuario, a partir de ahora hemos seguido adelante con esta implementación. Así es como se ve el código final

 downloadItem() { let urls = []; for(let item of this.selectedRowsData) { //calling the service to fetch the presigned url this.dataService.getPresignedToDownloadAll( item.value, item.id).subscribe((res) => { urls.push(res); this.download(urls); }); } } download(urls: any) { var self = this; var url = urls.pop(); setTimeout(function(){ self.snackBarService.loadComponent({ isSuccess: true, message: MESSAGES.downloadInProgress, }); var a = document.createElement('a'); a.setAttribute('href', url); document.body.appendChild(a); a.setAttribute('download', ''); a.setAttribute('target', '_blank'); a.click(); // a.remove(); }, 1000) }
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