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);
});
相关推荐
帅次几秒前
Web应用系统全面解析:从架构设计到测试部署的核心要点
前端·javascript·ajax·html5
前端 贾公子3 分钟前
从0到1 使用netlify进行线上部署网站
前端
电商API&Tina3 分钟前
合规电商数据采集 API|多平台实时数据抓取,告别爬虫封号风险
大数据·开发语言·前端·数据库·爬虫·python
梦6506 分钟前
HTML5 零基础详解
前端·html·html5
zhengxianyi5156 分钟前
ruoyi-vue-pro数据大屏优化——解决go-view同一个大屏报表在数据库中存储大量的图片的问题
前端·vue.js·前后端分离·数据大屏·ruoyi-vue-pro优化
C_心欲无痕7 分钟前
前端网站主题切换原理与实践:CSS 类名切换方案
前端·css
一 乐10 分钟前
动漫交流与推荐平台|基于springboot + vue动漫交流与推荐平台系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端
漉水浮沙11 分钟前
Fio crc 数据校验验证
java·服务器·前端·数据库
摘星编程12 分钟前
React Native for OpenHarmony 实战:TimePickerAndroid 时间选择器详解
javascript·react native·react.js
再学一点就睡14 分钟前
IP从入门到起飞:妈妈再也不用担心我不会网络基础啦
前端·后端·tcp/ip