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

如何使用 Express 从 Node.js 服务器下载文件?

Barbara Streisand
Barbara Streisand原创
2024-12-04 21:25:15787浏览

How Do I Download Files from a Node.js Server Using Express?

使用 Express 从 Node.js 服务器下载文件

Node.js 的 Express 框架提供了一种将文件从服务器下载到客户端的便捷方法。为此,请按照以下步骤操作:

设置标头

发送文件时,设置正确的 HTTP 标头以向客户端提供文件名和类型等基本信息至关重要。

  • Content-disposition:将此标头设置为“附件”;文件名='指定客户端看到的文件名。
  • Content-type:指示正在下载的文件类型,例如“video/quicktime”。

异步文件流

为了提高性能,使用文件流传输数据,而不是同步读取整个文件。这种方法可以最大程度地减少潜在的延迟或内存问题。

改进的解决方案

Express 现在包含用于文件下载的内置功能:

app.get('/download', function(req, res) {
  const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
  res.download(file); // Sets the appropriate headers and streams the file.
});

旧解决方案

在Express内置下载功能之前,以下代码提供了更全面的文件下载解决方案:

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

app.get('/download', function(req, res) {

  var file = __dirname + '/upload-folder/dramaticpenguin.MOV';

  var filename = path.basename(file);
  var mimetype = mime.getType(file);

  res.setHeader('Content-disposition', 'attachment; filename=' + filename);
  res.setHeader('Content-type', mimetype);

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

此解决方案包括:

  • 使用path.basename提取文件和文件名。
  • 使用node-mime确定内容类型。
  • 使用 fs.createReadStream 实现高效文件流。

作者遵循这些技术,您可以通过 Express 有效地从 Node.js 服务器下载文件,确保客户端正确接收并识别下载的内容。

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

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