Nginx的配置文件怎样分段下载

这次给大家带来Nginx的配置文件怎样分段下载,Nginx配置文件分段下载的配置文件有哪些,下面就是实战案例,一起来看一下。

Html5 提供了一个新的 Range 标签来实现文件的分段下载。在配置文件中可以配置这个标签来实现文件的分段下载。

Header标签

请求 Request Header: 下载 3744 以后的文件内容

range: bytes=3744-

登录后复制

返回 Response Header: 文件总长 15522643 个字节

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端发送了含有 range header的配置文件,那么nginx会返回含有range相关的信息:

这是一段完整的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' }

登录后复制

可以根据这个header中的content-range来获取文件的总大小。

Node.JS实现

这段示例先检测本地下了一半的文件,然后以 ‘r+’ 读写模式创建文件流,并将response流写入文件。

这里将表态文件添加 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+' } } //创建 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

返回的是部分文件内容

416 Requested Range Not Satisfiable

请求的range超过文件尺寸                                        

相信看了本文案例你已经掌握了方法,更多精彩请关注【创想鸟】其它相关文章!

推荐阅读:

配置文件

配置文件

以上就是Nginx的配置文件怎样分段下载的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2773749.html

(0)
上一篇 2025年3月8日 13:57:49
下一篇 2025年3月8日 13:58:00

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • Node.JS实现段点续传配置文件的分段下载

    这次给大家带来Node.JS实现段点续传配置文件的分段下载,Node.JS实现段点续传配置文件分段下载的注意事项有哪些,下面就是实战案例,一起来看一下。 Header标签 请求 Request Header: 下载 3744 以后的文件内容…

    编程技术 2025年3月8日
    200
  • vue-clibabel配置文件.babelrc怎么使用

    这次给大家带来vue-clibabel配置文件.babelrc怎么使用,使用vue-clibabel配置文件.babelrc的注意事项有哪些,下面就是实战案例,一起来看一下。 本文介绍vue-cli脚手架工具根目录的babelrc配置文件 …

    编程技术 2025年3月8日
    200
  • Webpack怎么优化配置文件

    这次给大家带来Webpack怎么优化配置文件,Webpack优化配置文件的注意事项有哪些,下面就是实战案例,一起来看一下。 Webpack 启动后会从配置的 Entry 出发,解析出文件中的导入语句,再递归的解析。 在遇到导入语句时 Web…

    编程技术 2025年3月8日
    200
  • JS怎样将json格式数组下载到excel表格里

    这次给大家带来js怎样将json格式数组下载到excel表格里,js将json格式数组下载到excel表格里的注意事项有哪些,下面就是实战案例,一起来看一下。 实例如下: $(document).ready(function(){ $(‘#…

    编程技术 2025年3月8日
    200
  • vue.js项目nginx部署步骤详解

    这次给大家带来vue.js项目nginx部署步骤详解,vue.js项目nginx部署的js有哪些,下面就是实战案例,一起来看一下。 js完成。 二、编译部署 1、项目路径下demo输入命令npm run build 编译完成后会发现在dem…

    2025年3月8日
    400
  • vue-cli配置文件步骤详解

    本文章适合初学者学习,如有错请提出。近期对vue比较感兴趣,所以准备用vue写一个blog。早期先对vue脚手架了解一下,对于新手官网建议先不用vue-cli,但我觉得如果没有任何的依据凭自己写一个项目(包括webpack的配置等)这无疑是…

    2025年3月8日
    200
  • vue-cli+bulid配置文件步骤详解

    这次给大家带来vue-cli+bulid配置文件步骤详解,vue-cli+bulid配置文件的注意事项有哪些,下面就是实战案例,一起来看一下。 本文章适合初学者学习,如有错请提出。近期对vue比较感兴趣,所以准备用vue写一个blog。早期…

    2025年3月8日
    200
  • 基于Blod的ajax进度条下载实现示例代码

    本篇文章主要介绍了基于blod的ajax进度条下载实现示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧 普通的浏览器下载 在web开发中,如果要实现下载功能,往往都是使用新开web页面或者是使用ifram…

    2025年3月8日
    200
  • 深入浅析Nginx实现AJAX跨域请求问题

    ajax从一个域请求另一个域会有跨域的问题。那么如何在nginx上实现ajax跨域请求呢?此问题难住很多朋友,下面我给大家带来了nginx实现ajax跨域请求问题的相关知识,感兴趣的朋友一起学习吧 AJAX从一个域请求另一个域会有跨域的问题…

    编程技术 2025年3月8日
    200
  • 使用Nginx 反向代理来避免 ajax 跨域请求的方法

    这篇文章主要介绍了使用nginx 反向代理来避免 ajax 跨域请求的方法的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下 服务器上 nginx + tomcat ,其中 nginx 监听 80 端口, tomcat 监听 808…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论