zoukankan      html  css  js  c++  java
  • 从页面到服务器,node实现文件下载

    起因:

    新来了一个需求,让用户下载一个200m的zip文件,并且校验用户信息,难点:下载的文件是200M的。

    现在维护的系统,以前的文件下载,走的是node的静态文件,用的express框架上自带的静态文件资源配置,用法如下:

    //静态文件资源目录配置
    app.use(express.static(__dirname + '/public'))
    这种方式是不能校验用户信息的,因为不走路由,也不走路由后面的后台逻辑层,所以改用get请求到后台,验证用户信息后再读取文件,将文件流返回到页面
     

    页面请求方式:
    window.location.href="/boxpro/downloadZip";

    路由后逻辑层代码:

    //以文件流的形式下载文件(因为文件太大,不能使用读取完文件之后再响应到页面的方式,太慢)
    var filePath = path.join(__dirname, '../../public/template/zz.zip');
    var stats = fs.statSync(filePath);
    var isFile = stats.isFile();
    if(isFile){
    res.set({
    'Content-Type': 'application/octet-stream', //告诉浏览器这是一个二进制文件
    'Content-Disposition': 'attachment; filename=zz.zip', //告诉浏览器这是一个需要下载的文件
    'Content-Length': stats.size //文件大小
    });
    fs.createReadStream(filePath).pipe(res);
    } else {
    res.end(404);
    }


  • 相关阅读:
    网站架构(页面静态化,图片服务器分离,负载均衡)方案全解析
    ant例子
    poj 3744 概率dp+矩阵快速幂
    hdu 4284 状态压缩dp
    hdu 4276 树形dp
    hdu 3586 树形dp+二分
    hdu 3001 三进制状压
    hdu 1561 树形dp+分组背包
    hdu 2196 树形dp
    poj 1485 dp
  • 原文地址:https://www.cnblogs.com/learnings/p/9376469.html
Copyright © 2011-2022 走看看