¿Cómo descargar un archivo usando Express.js?

Express.js  es un marco de enrutamiento y middleware para manejar los diferentes enrutamientos de la página web y funciona entre el ciclo de solicitud y respuesta y funciona en la parte superior del servidor node.js. En este artículo, discutiremos cómo descargar un archivo usando express.js.

Para descargar un archivo usandoexpreso.jsvamos a ver dos escenarios:

  1. Descargar un solo archivo usando la función res.download() que toma dos parámetros, la ruta del archivo y una función para manejar si ocurre algún error.
  2. Descargando varios archivos como una carpeta comprimida para esto, usaríamos el paquete npm » express-zip » que crea una carpeta comprimida usando elzip() función que toma una array de objetos como parámetro. Cada objeto tiene dos campos de ruta y nombre de archivo.

Primero inicialicemos el proyecto y discutamos cada escenario uno por uno:

Paso 1: crea un archivo “ app.j s ” e inicializa tu proyecto con npm.

npm init

Paso 2: ahora instale dos paquetes npm : » express » y » express-zip «.

npm install express
npm install express-zip

Paso 3: cree un archivo » index.html » y luego cree una carpeta llamada » Archivos » dentro de la carpeta de su proyecto. En la carpeta de archivos crea los cuatro archivos de texto mencionados a continuación:

  • single_gfg.txt
  • multiple_one_gfg.txt
  • multiple_two_gfg.txt
  • multiple_tres_gfg.txt

La estructura final del proyecto se verá así :

Estructura del proyecto

Paso 4: Ahora codifiquemos el archivo “ index.html ”. En él crearemos dos formularios:

  • Uno con la ruta GET como – ‘ /single ‘ (para manejar la solicitud de descarga de un solo archivo).
  • Uno con la ruta GET como – ‘ /multipl e ‘ (para manejar la solicitud de descarga de múltiples archivos).

índice.html 

HTML

<!DOCTYPE html>
<html lang="en">
 
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content=
        "width=device-width, initial-scale=1.0">
    <title>Download</title>
</head>
 
<body>
    <br>
 
    <!-- Form to handle single file download request-->
    <form action="/single" method="get">
        <button type="submit">Download Single File</button>
    </form>
 
    <br><br>
 
    <!-- Form to handle single file download request-->
    <form action="/multiple" method="get">
        <button type="submit">Download Multiple File</button>
    </form>
</body>
 
</html>

Paso 5: ahora codifique el archivo » app.js «. En él, creamos funciones de solicitud GET para manejar las requests de descarga utilizando express. Usamos » express-zip » y res.download() como se mencionó al principio.

archivo app.js

Javascript

// Requiring express package for routing
const express = require('express')
 
// Creating app
const app = express();
 
// Requiring express-zip for downloading a zip file
const zip = require('express-zip');
 
// The folder path for the files
const folderPath = __dirname+'/Files';
 
// GET request for single file
app.get('/single',function(req,res) {
    console.log('single file');
     
    // Download function provided by express
    res.download(folderPath+'/single_gfg.txt', function(err) {
        if(err) {
            console.log(err);
        }
    })
})
 
// GET request for multiple file download as zip
app.get('/multiple', function(req, res) {
    console.log('Multiple file download')
 
    // zip method which take file path
    // and name as objects
    res.zip([
           { path: folderPath+'/multiple_one_gfg.txt',
               name: 'one_gfg.txt'},
           { path: folderPath+'/multiple_two_gfg.txt',
               name: 'two_gfg.txt'},
           { path: folderPath+'/multiple_three_gfg.txt',
            name: 'three_gfg.txt'}
    ])
})
 
// GET request to the root of the app
app.get('/', function(req, res){
    res.sendFile(__dirname+'/index.html');
})
 
// Creating server at port 3000
app.listen(3000,function(req,res){
    console.log('Server started to listen at 3000');
})

Paso 5: Ahora ejecute la aplicación usando su terminal.

node app.js

Salida: vaya a cualquier navegador y escriba http://localhost:3000

Producción

Puede ir a la carpeta Descargas y extraer la carpeta zip. Así es como podemos descargar archivos usando express en Node.js

Publicación traducida automáticamente

Artículo escrito por devrajkumar1903 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *