使用 Express.js 实现文件下载功能

在 Web 应用程序中,文件下载是一个非常常见的需求。本文将介绍如何使用 Express.js 实现文件下载功能。

准备工作

首先,我们需要安装 Express.js。可以使用 npm 进行安装:

npm install express --save

接下来,我们需要创建一个 Express 应用程序。在项目根目录下创建一个 server.js 文件,并添加以下代码:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.listen(3000, () => {
  console.log('App listening on port 3000!');
});

现在,我们的 Express 应用程序已经准备好了。

实现文件下载

要实现文件下载功能,我们需要使用 Node.js 的 fs 模块读取文件,并将其发送到客户端。

首先,我们需要添加一个路由处理程序,用于处理文件下载请求。在 server.js 文件中添加以下代码:

app.get('/download', (req, res) => {
  const filePath = '/path/to/file.pdf';
  const fileName = 'file.pdf';
  res.download(filePath, fileName, (err) => {
    if (err) {
      console.log(err);
      res.status(500).send('Internal Server Error');
    }
  });
});

在上面的代码中,我们使用 res.download() 方法将文件发送到客户端。该方法需要三个参数:

  • filePath:要下载的文件的完整路径。
  • fileName:要下载的文件的名称。
  • callback:可选参数,当下载完成或出现错误时调用。

现在,我们可以在浏览器中访问 /download 路由,从而下载指定的文件。

完整示例代码

下面是一个完整的示例代码:

const express = require('express');
const app = express();

app.get('/', (req, res) => {
  res.send('Hello World!');
});

app.get('/download', (req, res) => {
  const filePath = '/path/to/file.pdf';
  const fileName = 'file.pdf';
  res.download(filePath, fileName, (err) => {
    if (err) {
      console.log(err);
      res.status(500).send('Internal Server Error');
    }
  });
});

app.listen(3000, () => {
  console.log('App listening on port 3000!');
});

总结

本文介绍了如何使用 Express.js 实现文件下载功能。通过使用 Node.js 的 fs 模块和 Express.js 的 res.download() 方法,我们可以轻松地将文件发送到客户端。希望这篇文章对你有所帮助!

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65892530eb4cecbf2de5cc2c


纠错
反馈