从 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中文网其他相关文章!