3

Manipular documentos desde HTTP

Siempre he tenido problemas descargando archivos desde un S3, o cualquier otra fuente de archivos, porque Chrome los descarga directamente y Firefox los abre en una nueva ventana y es un problema manipularlos. Lo que suelo hacer es:

  1. Desde el backend, enviar un buffer de datos al front-end en el endpoint.
  2. Hacemos un fetch para obtener el buffer del PDF:
  getPDF(): Promise<any> {
    return fetch(`url/to/pdf`, 
      { method: 'GET', }
    );
  }
  1. Cuando se resuelve la promesa, convertimos el buffer en un objeto Blob y creamos una URL temporal con URL.createObjectURL() para finalmente abrirla en una nueva pestala con window.
  openPDF(): void {
    this.getPDF()
      .then(response => response.blob())
      .then(pdf => {
        if (pdf) {
          window.open(URL.createObjectURL(pdf), '_blank');
        }
      })
      .catch(err => { 
        console.log(err);
      });
  }
Escribe tu comentario
+ 2