作家
登录

静态文件服务器实现的功能

作者: 来源: 2018-03-24 18:32:17 阅读 我要评论

  1. getEncoding(req, res) { 
  2.  
  3.     let acceptEncoding = req.headers['accept-encoding'];//获取客户端发送的紧缩请求头的信息 
  4.     if (/\bgzip\b/.test(acceptEncoding)) {//如不雅是gzip的格局 
  5.         res.setHeader('Content-Encoding''gzip'); 
  6.         return zlib.createGzip(); 
  7.     } else if (/\bdeflate\b/.test(acceptEncoding)) {//如不雅是deflate的格局 
  8.         res.setHeader('Content-Encoding''deflate'); 
  9.         return zlib.createDeflate(); 
  10.     } else { 
  11.         return null;//不紧缩 
  12.     } 

Range支撑,断点续传

设计思路

  • 钙揭捉?项指定下载字节典范围,常应用于分块下载文件
  • 办事器告诉客户端可以应用range response.setHeader('Accept-Ranges', 'bytes')  
  • Server经由过程请求头中的Range:bytes=0-xxx来断定是否是做Range请求,如不雅这个值存在并且有效,则只发还请求的那部分文件内容,响应的状况码变成206,如不雅无效,则返回416状况码,注解Request
  1. getStream(req, res, filepath, statObj) { 
  2.     let start = 0;//可读流肇端地位 
  3.     let end = statObj.size - 1;//可读流停止地位 
  4.     let range = req.headers['range'];//获取客户端的range请求头信息, 
  5.     if (range) {//断点续传 
  6.         res.setHeader('Accept-Range''bytes'); 
  7.         res.statusCode = 206;//返回全部内容的一块 
  8.         let result = range.match(/bytes=(\d*)-(\d*)/);//断点续传的分段内容不克不及有小数,收集传输的最小单位为一个字节 
  9.         if (result) { 
  10.             start = isNaN(result[1]) ? start : parseInt(result[1]); 
  11.             end = isNaN(result[2]) ? end : parseInt(result[2]) - 1; 
  12.         } 
  13.     } 
  14.     return fs.createReadStream(filepath, { 
  15.         start, end 
  16.     }); 

宣布为可履行敕令

起首在package.json设备一下"bin": { "http-static": "bin/www" }

  1. #! /usr/bin/env node     //这段代码必定要写在开首,为了兼容各个电脑平台的差别性 

      推荐阅读

      AICHAIN创始人段凯:AI+区块链 技术谱系极端的火花碰撞

    全平易近充电节 | 3月26日~30日 2000位IT行业拭魅战专家邀请你一路充电进修!作为一门用于模仿、延长和扩大人的智能的理论、办法、技巧及应用体系的新技巧科学,人工智能在历经元年的新一轮火爆之后,应>>>详细阅读


    本文标题:静态文件服务器实现的功能

    地址:http://www.17bianji.com/lsqh/40859.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)