首页 >web前端 >js教程 >如何使用 ExpressJS 从 NodeJS 服务器下载文件?

如何使用 ExpressJS 从 NodeJS 服务器下载文件?

Patricia Arquette
Patricia Arquette原创
2024-11-30 14:34:11523浏览

How Can I Download Files from a NodeJS Server Using ExpressJS?

使用 Express 从 NodeJS 服务器下载文件

访问 NodeJS 服务器上的网页时,您可能会遇到需要下载存储在 NodeJS 服务器上的文件的情况服务器。本文将指导您完成使用 ExpressJS 框架下载文件的过程。

ExpressJS 文件下载

要启动文件下载,请使用 res.download() ExpressJS提供的方法。此方法自动设置文件附件和处置所需的 HTTP 标头。

演示:

app.get('/download', (req, res) => {
  res.download(`${__dirname}/upload-folder/dramaticpenguin.MOV`);
});

包括文件名和类型

通过默认情况下,下载的文件名为“download”。要指定自定义文件名和类型,您需要设置额外的 HTTP 标头。

  • 文件名: res.setHeader('Content-disposition', 'attachment; filename= dramaticpenguin.MOV')
  • 文件类型: res.setHeader('Content-type', 'video/quicktime')

综合实现

这里有一个更健壮的实现,使用 mime 库来确定动态文件的 mime 类型:

const path = require('path');
const mime = require('mime');
const fs = require('fs');

app.get('/download', (req, res) => {
  const file = __dirname + '/upload-folder/dramaticpenguin.MOV';
  const filename = path.basename(file);
  const mimetype = mime.getType(file);

  res.setHeader('Content-disposition', `attachment; filename=${filename}`);
  res.setHeader('Content-type', mimetype);

  const filestream = fs.createReadStream(file);
  filestream.pipe(res);
});

使用res.write()

如果您更喜欢 res.write() 方法,请先设置 Content-Disposition 和 Content-Length 标头:

res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
res.setHeader('Content-Length', file.length);
res.write(file, 'binary');

记住一致使用用于文件传输的 readStream 而不是同步方法以获得最佳性能。

以上是如何使用 ExpressJS 从 NodeJS 服务器下载文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn