首页 >web前端 >js教程 >如何从 Express.js 服务器下载具有正确文件名和扩展名的文件?

如何从 Express.js 服务器下载具有正确文件名和扩展名的文件?

DDD
DDD原创
2024-12-02 11:53:11315浏览

How to Download Files with Correct Filenames and Extensions from Express.js Servers?

从 Express.js 服务器下载具有完整文件名和扩展名的文件

在 Node.js 中,提供文件下载很简单,但是确保它具有正确的名称和文件扩展名可能有点棘手。

旧方法:

使用 Express.js 编写文件下载路由时,您需要显式设置 Content-Disposition 标头以提供文件名和文件扩展名。此外,您可能需要包含 Content-Length 和 Content-Type 标头以便更好地处理:

app.get('/download', function(req, res) {
  const file = `${__dirname}/upload-folder/dramaticpenguin.MOV`;
  res.setHeader('Content-disposition', 'attachment; filename=dramaticpenguin.MOV');
  res.write(fs.readFileSync(file, 'binary'));
  res.end();
});

Express.js Helper:

Express.js now包括一个名为 download 的辅助方法,可简化文件下载进程:

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

增强功能:

对于更高级的功能,您可以利用路径和 mime 等第三方库自动确定文件名、文件扩展名、和 mime 类型:

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

app.get('/download', function(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);
  res.download(file);
});

此方法可确保您下载的文件始终具有正确的名称和文件扩展名,无论其文件名如何服务器上的位置。

以上是如何从 Express.js 服务器下载具有正确文件名和扩展名的文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

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