美文网首页
使用Nodejs和Express构建http响应流实现下载功能

使用Nodejs和Express构建http响应流实现下载功能

作者: kongxx | 来源:发表于2023-11-20 22:09 被阅读0次

首先创建一个文件流来读取要下载的文件,当然可以是动态产生的输入流

const fileStream = fs.createReadStream('test.zip');

然后创建响应头,指定响应的类型,同时也可以使用Content-Disposition设置浏览器下载时需要保存的文件名

const head = {
    'Content-Type': 'application/zip, application/octet-stream; charset=ISO-8859-1',
    'Content-Disposition': 'attachment;filename=\"resources123.zip\"'
  };
res.writeHead(200, head);

最后通过文件流的pipe()方法输出到响应里

fileStream.pipe(res);

完整router代码如下

router.get('/download', function(req, res, next) {
    const fileStream = fs.createReadStream('test.zip');
    const head = {
        'Content-Type': 'application/zip, application/octet-stream; charset=ISO-8859-1',
        'Content-Disposition': 'attachment;filename=\"test123.zip\"'
      };
    res.writeHead(200, head);
    fileStream.pipe(res);
});

最后说一下,express里的response也提供了一个attachment()方法,这个方法会设置Content-Disposition头,并且会通过res.type()来设置Content-Type头,代码如下

router.get('/download', function(req, res, next) {
    const fileStream = fs.createReadStream('test.zip');
    res.attachment('test123.zip');
    fileStream.pipe(res);
});

最后的最后,看一下如果出错了应该怎么处理

router.get('/download', function(req, res, next) {
    const fileStream = fs.createReadStream('test.zip');
    fileStream.on('open', () => {
        res.attachment('test123.csv');
        fileStream.pipe(res);
    });
    fileStream.on('error', err => {
        next(err);
    });
});

相关文章

  • 网络爬虫实现批量下载图片

    需求:用nodejs编写代码实现下载某个网站单页面的所有图片 开发思路: 使用HTTP模块发起请求,获取到响应的数...

  • node.js制作自己blog的

    在线博客,nodejs开发后台,目前功能只有登陆、注册、显示blog列表和添加 nodejs使用express框架...

  • nodejs+express中怎样使用MySql

    首先我们得下载nodejs和express nodejs在官网下载,nodejs官网,尽量下载最新的版本; 下载好...

  • express初识源码-Router,Layer,Route

    express提供丰富的http工具,快速处理请求,响应。核心功能中间件,路由,基于三个类来实现,Router,L...

  • nodeJS搭建web服务器

    1.下载安装express框架 Express 框架核心特性: 可以设置中间件来响应 HTTP 请求。 定义了路由...

  • Express.js 教程

    express js项目的构建需要下载并使用WebStorm软件,新建node express项目,即可生成标准文...

  • 安装Node.js

    Node.js官网:http://nodejs.cn/ 选择下载 或者直接使用链接 http://nodejs...

  • 01-Docker实战,搭建NodeJs环境

    目的 实现简单的docker的nodejs容器,使用Dockerfile构建我们的使用nodejs开发的系统 技术...

  • gulp 教程

    gulp.js 是基于node.js构建的。利用nodejs流的威力 1. 安装nodejs http://www...

  • SequelizeBaseError ER_TOO_LONG_K

    nodejs express自己的session模块,通过创建sessions表来实现,但在db使用mysql情况...

网友评论

      本文标题:使用Nodejs和Express构建http响应流实现下载功能

      本文链接:https://www.haomeiwen.com/subject/ydxbwdtx.html