js通过HEAD请求方式提前获取下载文件大小,XMLHttpRequest和ajax两种实例

Posted 林木慕风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js通过HEAD请求方式提前获取下载文件大小,XMLHttpRequest和ajax两种实例相关的知识,希望对你有一定的参考价值。

HTTP 中定义了 7 种请求方式:GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。

【GET:获取资源】【POST:传输实体文本】【HEAD:获得报文首部】【PUT:传输文件】【DELETE:删除文件】【OPTIONS:询问支持的方法】【TRACE:追踪路径】【CONNECT:要求用隧道协议连接代理】

下面我们使用HEAD方式来实现在下载文件前通过获得返回报文的头部来获取文件大小:

var url = ‘http://‘; //文件下载链接
var fileSize = 0; //下载文件大小    
var xhr = new XMLHttpRequest();
    xhr.open(‘HEAD‘, url, true);    // 也可用POST方式
    xhr.onreadystatechange = () => {
     if (xhr.readyState == 4) {
       if (xhr.status == 200) {
         fileSize = xhr.getResponseHeader(‘Content-Length‘);
         console.log(fileSize)
       } else {
         alert(‘ERROR‘);
       }
     }
    };
    xhr.send()

 这种发放在业务逻辑中一般用来获取后台通过报文头部传递的参数,不只是来获取文件大小。

ajax方式的代码如下:

             $.ajax({
                url: item.m3u8Url,
                async: false,
                timeout: 2000,
                // type: ‘HEAD‘,
                complete: function( xhr,data ){
                  console.log(xhr.getResponseHeader("hls-next"));
                  hlsNext = Math.floor(xhr.getResponseHeader("hls-next")/1000)
                  console.log(‘hlsNext‘,hlsNext)
                }
              });

以上是关于js通过HEAD请求方式提前获取下载文件大小,XMLHttpRequest和ajax两种实例的主要内容,如果未能解决你的问题,请参考以下文章

当 HEAD 请求未报告 ContentLength 时,如何获取下载大小?

Android-HttpURLConnection获取下载文件大小

三.node.js中获取post请求的两种方式

通过ajax请求上传文件时读取文件大小

get、post、put、delete、head 请求方式的区别

js 如何获取上传文件的大小