es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo insertar un enlace para descargar un archivo PDF en Angular?

Estoy incluyendo una página “Acerca de” en una aplicación que estoy escribiendo. Esta página debe contener un enlace que descargue un archivo PDF al hacer clic en él. Aquí está el archivo “about.component.html”:

<h1>Acerca de</h1>
<div class="panel">
    <p>
        Aquí está el texto del primer panel.
    </p>
    <p>
        Aquí está el texto del segundo panel.
    </p>
</div>
<a ng-href="PDFFile.pdf" href="PDFFile.pdf">Descargar Hoja de Información</a>

El enlace aparece, pero cuando hago clic en él, no aparece nada. “PDFFile.pdf” se encuentra en el mismo directorio que “about.component.html”. ¿Me falta algo aquí?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, te falta el código de backend necesario para manejar la descarga del archivo. En el código de frontend, has especificado correctamente la ruta del archivo en los atributos ng-href y href. Sin embargo, cuando se hace clic en el enlace, se necesita activar una función de backend que enviará el archivo al navegador para su descarga.

    Suponiendo que estás utilizando node.js como tecnología de backend, puedes lograr esto utilizando el módulo fs (sistema de archivos) y el objeto res (respuesta) del módulo http. Aquí tienes un ejemplo de cómo hacerlo:

    const fs = require('fs');
    const http = require('http');
    
    http.createServer((req, res) => {
      if (req.url === '/PDFFile.pdf') {
        const file = fs.createReadStream('./PDFFile.pdf');
        res.setHeader('Content-Type', 'application/pdf');
        res.setHeader('Content-Disposition', 'attachment; filename=PDFFile.pdf');
        file.pipe(res);
      } else {
        // manejar otras solicitudes aquí
      }
    }).listen(3000);
    

    Este código establece un servidor HTTP simple que escucha en el puerto 3000. Cuando se hace una solicitud de PDFFile.pdf, lee el archivo del sistema de archivos utilizando fs.createReadStream() y lo envía al objeto res con los encabezados de tipo de contenido y disposición necesarios para activar el diálogo de descarga del navegador.

    Nota: Si estás utilizando un framework como Express, hay formas más sencillas de manejar las descargas de archivos. Consulta la documentación del framework para obtener más información.

Comments are closed.