如何使用 Express.js 下载文件

如何使用 Express.js 下载文件

Express.js是用于处理网页不同路由的路由和中间件框架,它在请求和响应周期之间工作,并在Node.js服务器的顶部工作。本文将讨论如何使用express.js下载文件。

要使用express.js下载文件,我们将看到两种情况:

  1. 使用 res.download() 函数下载单个文件,该函数接受两个参数,文件路径和处理错误的函数。
  2. 使用“express-zip” npm包将多个文件作为压缩文件夹下载,该包使用zip()函数创建一个压缩文件夹,该函数接受一个对象数组作为参数。每个对象有两个字段,路径和文件名。

让我们首先初始化项目,逐个讨论每个场景:

步骤1: 创建一个“app.js”文件并使用npm初始化您的项目。

npm init
JavaScript

步骤2: 现在安装两个 npm 包:“ express ”和“ express-zip ”。

npm install express
npm install express-zip
JavaScript

步骤3: 创建一个名为“ index.html ”的文件,然后在你的项目文件夹内创建一个名为“ Files ”的文件夹。在Files文件夹内创建以下提到的四个文本文件:

  • single_gfg.txt
  • multiple_one_gfg.txt
  • multiple_two_gfg.txt
  • multiple_three_gfg.txt

最终项目结构将如下所示:

如何使用 Express.js 下载文件

步骤4: 现在让我们来编写“ index.html ”文件。我们将在其中创建两个表单:

  • 一个使用GET路由的表单,路由为 – ‘ /single ‘ (用于处理单个文件下载请求)。
  • 一个使用GET路由的表单,路由为 – ‘ /multipl e ‘ (用于处理多个文件下载请求)。

index.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>
JavaScript

步骤5:

现在编写“ app.js ”文件。在其中,我们使用express创建 GET 请求函数来处理下载请求。我们在开始时提到了“express-zip”和“res.download()”。

app.js文件

// 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');
})
JavaScript

步骤6: 现在使用您的终端运行应用程序。

node app.js
JavaScript

输出: 在任何浏览器中输入 http://localhost:3000

如何使用 Express.js 下载文件

您可以前往下载文件夹并解压zip文件。这就是我们如何在Node.js中使用express下载文件。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册