📅  最后修改于: 2023-12-03 14:51:52.433000             🧑  作者: Mango
在前端开发中,经常需要从服务器下载文件。Express.js 是一个流行的 Node.js 框架,可以用于构建 Web 应用程序和 API,也可以用于提供文件下载功能。本文将介绍如何使用 Express.js 下载文件。
Express.js 提供了 res.download() 方法,可用于向客户端发送文件下载。
app.get('/download', function(req, res){
const file = __dirname + '/public/images/example.png';
res.download(file);
});
在上面的代码中,我们创建了一个 /download
路由,当访问该路由时,服务器将向客户端发送名为 example.png
的图片文件。
除了使用 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()
方法。
默认情况下,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
。
如果您需要向客户端发送二进制文件(如 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()
方法。如果需要指定文件名或发送二进制文件,则需要设置一些附加响应头。