1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時間:8:30-17:00
      你可能遇到了下面的問題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
      Nginx如何配置文件分段下載功能

      這篇文章主要為大家展示了“Nginx如何配置文件分段下載功能”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Nginx如何配置文件分段下載功能”這篇文章吧。

      創(chuàng)新互聯(lián)專業(yè)提供成都主機托管四川主機托管成都服務(wù)器托管四川服務(wù)器托管,支持按月付款!我們的承諾:貴族品質(zhì)、平民價格,機房位于中國電信/網(wǎng)通/移動機房,達州主機托管服務(wù)有保障!

      Html5 提供了一個新的 Range 標簽來實現(xiàn)文件的分段下載。在Node.JS中可以配置這個標簽來實現(xiàn)文件的分段下載。

      Header標簽

      請求 Request Header: 下載 3744 以后的文件內(nèi)容

      range: bytes=3744-

      返回 Response Header: 文件總長 15522643 個字節(jié)

      accept-ranges': 'bytes'
      content-range': 'bytes */15522643'

      Nginx配置

      首先要配置Nginx支持range標簽返回,很簡單添加 add_header Accept-Ranges bytes; 這一行即可

      server {
       listen 80;
       server_name adksdf.com;
       location ~ ^/(img/|js/|css/|upload/|font/|fonts/|res/|icon) {
        add_header Access-Control-Allow-Origin *;
        add_header Accept-Ranges bytes;
        root /var/www/...;
        access_log off;
        expires max;
       }
       ...
      }

      啟用以后,如果node.js端發(fā)送了含有 range header的請求信息,那么nginx會返回含有range相關(guān)的信息:

      這是一段完整的Response Header,注意這里的 content-length 不是文件的總長度,而是當前 range 的長度。

      { server: 'nginx',
       date: 'Wed, 24 Jan 2018 02:43:20 GMT',
       'content-type': 'application/zip',
       'content-length': '12420187',
       'last-modified': 'Tue, 16 Jan 2018 12:09:47 GMT',
       connection: 'close',
       etag: '"5a5deb8b-ecdb53"',
       expires: 'Thu, 31 Dec 2037 23:55:55 GMT',
       'cache-control': 'max-age=315360000',
       'access-control-allow-origin': '*',
       'accept-ranges': 'bytes',
       'content-range': 'bytes 3102456-15522642/15522643' }

      可以根據(jù)這個header中的content-range來獲取文件的總大小。

      Node.JS實現(xiàn)

      這段示例先檢測本地下了一半的文件,然后以 'r+' 讀寫模式創(chuàng)建文件流,并將response流寫入文件。

      這里將表態(tài)文件添加 range 的支持。

      var reqOptions = { url: packageUrl, headers: {} }
      var filepath  = '/path/to/your/part/file'
      var fileOptions = {}
      fs.stat(filepath, function(err, states) {
       if (states) {
        //Range: bytes=3744-
        reqOptions.headers['range'] = 'bytes=' + states.size + '-'
        fileOptions = { start: states.size, flags: 'r+' }
       }
       //創(chuàng)建 http 對象方法
       var reqUrl = reqOptions.url
       var urlObj = url.parse(reqUrl)
       var options = {
         hostname : urlObj.hostname
        , port   : urlObj.port
        , path   : urlObj.pathname
        , headers  : reqOptions.headers || {}
       }
       var req = http.request(options, function(res) {
        var receives  = []
        var err     = null
        var statusCode = res.statusCode
        var headers   = res.headers
        var ws = fs.createWriteStream(filepath, fileOptions)
        ws.on('error', function(e) {
         console.log('ws error', e)
        })
        res.on('data', function(chrunk) {
         ws.write(chrunk)
        })
        res.on('error', function(err) {
         ws.end()
        })
        res.on('end', function() {
         ws.end()
        })
       })
       req.on('error', function(e) {
        cb && cb(e, null, {})
       })
       req.end()
       ...
      })

      返回Header

      在請求nginx可能會返回其他status code,比如說 206或416,含意如下:

      206 Partial Content

      返回的是部分文件內(nèi)容

      416 Requested Range Not Satisfiable

      請求的range超過文件尺寸

      以上是“Nginx如何配置文件分段下載功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!


      分享題目:Nginx如何配置文件分段下載功能
      轉(zhuǎn)載注明:http://ef60e0e.cn/article/ghsips.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        邵武市| 松桃| 梧州市| 天气| 读书| 南漳县| 靖边县| 泽库县| 临安市| 麻江县| 游戏| 米脂县| 漯河市| 紫阳县| 清流县| 宁波市| 商城县| 洛川县| 涟水县| 贵定县| 北川| 南投县| 遵义市| 伊金霍洛旗| 柏乡县| 马鞍山市| 民丰县| 宁远县| 桐城市| 饶河县| 伊宁市| 抚远县| 巴林右旗| 景德镇市| 若羌县| 吉首市| 东海县| 佛坪县| 香港| 兰西县| 黔西县|