获取外部文件信息(状态和大小)时出现问题



我想知道是否有一种方法来检查外部文件是否在线,或与AngularJS(或JavaScript)可用。如果我能以某种方式确定它的大小(就是+)我首先想到的是使用$http的head函数。但事实证明,这并不总是工作,我似乎找不到标题信息的大小…

var file = { src: '//code.jquery.com/jquery.min.js' };
$http.head(file.src)
    .success(function(data, status, headers) {
       file.size = headers(['content-length']); // always empty
       file.status = 'online'; 
    })
    .error(function() {
        file.status = 'offline';
    });

有人知道吗?

您要查找的标头是HTTP content-length

$http.head(file.src)
  .then(function(data, status, headers, config) {
     file.size = headers(['content-length']);
     file.status = 'online';
  });

当然,由于您是在浏览器上运行,因此您只能向您的服务器或指定CORS标头Access-Control-Allow-Origin的任何服务器执行请求。

对于其他一切,您必须通过您自己的服务器代理请求。但是,请注意,并非所有服务器都响应HEAD请求-在这种情况下,您必须执行完整的GET,并在超时后取消请求(文件在线并正在下载)或抛出错误(文件脱机)。

好的。我得出的结论是,目前还没有(可靠的)方法可以用JavaScript做到这一点。我尝试通过将脚本标签注入隐藏的iframe来实现解决方案,然后使用onload或onerror事件检查结果。但是,当您正在加载的外部文件中出现错误时,代码也会停止。因此,即使这种方法也是不可行的。

那么从这里开始,我将在服务器端搜索解决方案

最新更新