📅  最后修改于: 2023-12-03 15:30:41.528000             🧑  作者: Mango
res.download()
是Express.js框架中的一个响应函数,用于将文件作为附件下载到客户端。本文将对res.download()
函数做详细介绍。
res.download(path [, filename] [, options] [, callback])
path:要下载的文件路径。这个路劲是相对于服务端的工作目录(一般为应用程序的根目录)的相对路径。
filename(可选):指定下载时客户端浏览器保存的文件名。如果缺省,将使用path中的文件名作为默认名称。
options(可选):一个包含以下属性的对象:
callback(可选):回调函数,当下载完成时调用,其中包含一个错误参数。
要下载一个文件,只需要使用res.download()
函数。例如:
app.get('/download', function(req, res){
const filePath = "/public/downloads/sample.pdf";
res.download(filePath);
});
上面的代码会将文件“sample.pdf”作为附件下载到客户端。在浏览器的下载目录中,你将看到一个“sample.pdf”文件。
如果想要更改文件名,只需在调用res.download()
时传递第二个参数,如下所示:
app.get('/download', function(req, res){
const filePath = "/public/downloads/sample.pdf";
const fileName = "downloaded-file-name.pdf";
res.download(filePath, fileName);
});
在这种情况下,文件将被下载并保存为“downloaded-file-name.pdf”。
你还可以为下载指定响应头。例如,要指定MIME类型,只需在输出标题中添加类型即可。在以下示例中,我们将同时指定MIME类型和文件名。
app.get('/download', function(req, res){
const filePath = "/public/downloads/sample.pdf";
const fileName = "downloaded-file-name.pdf";
res.set({
"Content-Disposition": "attachment; filename="+fileName,
"Content-Type": "application/pdf"
});
res.download(filePath);
});
我们可以通过以下流程图来更好地理解res.download()
函数的工作原理。
graph TD
A{发送 HTTP 请求}
B{发起路由请求}
C{发现匹配路由}
D{处理路由中间件}
E{调用res.download()函数}
F{查找文件}
G{设置响应头}
H{传输文件}
A-->B
B-->C
C-->D
D-->E
E-->F
F-->G
G-->H
H-->A
res.download()
函数是Express.js框架中非常有用的一个函数,它可以让我们轻松地从服务端下载文件。我们可以使用它的可选参数选项来更好地控制我们的下载。尽管它不像其他函数那么常用,但它一旦用起来,你会惊讶地发现它有多么方便和实用。