Node.js实现文件下载

1.设置响应头:

使用 res.writeHead 设置适当的响应头,包括 Content-Type 和 Content-Disposition 以触发下载对话框。
2.创建文件读取流:

使用 fs.createReadStream 创建文件读取流,并通过 pipe 方法将其连接到响应对象 res,从而将文件内容发送给客户端。

javascript 复制代码
const express = require('express');
const path = require('path');
const fs = require("fs");
const router = express.Router();

router.get('/download/example.txt', function(req, res) {
    const filePath = path.join(__dirname, 'example.txt');
    
    // 设置响应头
    res.writeHead(200, {
      'Content-Type': 'application/octet-stream',
      'Content-Disposition': 'attachment; filename="example.txt"'
    });
    
    // 创建文件读取流并将其连接到响应对象
    const fileStream = fs.createReadStream(filePath);
    fileStream.pipe(res);
});
相关推荐
Y敲键盘的地方12 小时前
第9章 工具调用循环——Agent的行动闭环
java·服务器·前端
苏瞳儿12 小时前
vue3+pinia+mqtt实时响应连接
前端·javascript·vue.js
ayqy贾杰12 小时前
我同事,40了,他vibe coding了个App
前端·ios·客户端
kylinmin13 小时前
Node.js安装及环境配置超详细教程(以win11为例子)
node.js
暗冰ཏོ13 小时前
《2026 Vue2 + Vue3 完整学习指南:基础语法、路由缓存、登录拦截、项目实战与面试题》
前端·vue.js·vue·vue3·vue2
蜡台13 小时前
VUE 侧边按钮组,可自定义位置
前端·javascript·css
AI科技星13 小时前
维度原本——基于超复数谱系的全域维度统一理论
c语言·前端·javascript·网络·electron
遇事不決洛必達13 小时前
【爬虫随笔】常见加密算法特征总结
javascript·爬虫·逆向·加密算法
kyriewen13 小时前
14MB VS 15KB:前React核心成员用AI写了个排版库,让Safari快了一千倍
前端·javascript·react.js
阿奇__13 小时前
基于 Node.js 与智谱 AI 的 RAG 工程实践
人工智能·node.js