📜  如何使用 Express.js 下载文件?(1)

📅  最后修改于: 2023-12-03 14:51:52.433000             🧑  作者: Mango

如何使用 Express.js 下载文件?

在前端开发中,经常需要从服务器下载文件。Express.js 是一个流行的 Node.js 框架,可以用于构建 Web 应用程序和 API,也可以用于提供文件下载功能。本文将介绍如何使用 Express.js 下载文件。

1. 使用 res.download() 方法

Express.js 提供了 res.download() 方法,可用于向客户端发送文件下载。

app.get('/download', function(req, res){
  const file = __dirname + '/public/images/example.png';
  res.download(file); 
});

在上面的代码中,我们创建了一个 /download 路由,当访问该路由时,服务器将向客户端发送名为 example.png 的图片文件。

2. 使用 res.sendFile() 方法

除了使用 res.download() 方法,还可以使用 res.sendFile() 方法向客户端发送文件。和 res.download() 方法不同,res.sendFile() 方法将文件作为常规响应的一部分发送给客户端。

app.get('/download', function(req, res){
  const file = __dirname + '/public/images/example.png';
  res.sendFile(file); 
});

上面的代码与前一段代码相比,唯一的区别在于 res.sendFile() 方法替代了 res.download() 方法。

3. 下载文件时指定文件名

默认情况下,Express.js 根据发送的文件的名称来决定文件的下载名称。如果您希望从服务器下载文件时设置不同的文件名,可以使用以下代码:

app.get('/download', function(req, res){
  const file = __dirname + '/public/images/example.png';
  const filename = 'new_filename.png';
  res.download(file, filename); 
});

在上面的代码中,我们添加了第二个参数 filename,将文件 example.png 重命名为 new_filename.png

4. 下载二进制文件

如果您需要向客户端发送二进制文件(如 PDF 或 Word 文档),可以使用以下代码:

app.get('/download', function(req, res){
  const file = __dirname + '/public/files/example.pdf';
  res.setHeader('Content-Type', 'application/pdf');
  res.setHeader('Content-Disposition', 'attachment;filename=example.pdf');
  res.sendFile(file); 
});

在上面的代码中,我们设置了响应头来指示客户端发送一个名为 example.pdf 的二进制文件。

结论

使用 Express.js 下载文件很容易,只需要简单地使用 res.download()res.sendFile() 方法。如果需要指定文件名或发送二进制文件,则需要设置一些附加响应头。