微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何知道从URL下载完成的时间?

如何解决我如何知道从URL下载完成的时间?

| 在我的项目中,我使用类似以下功能的东西来重定向用户以便下载文件
function promptDownload(file){
      location.href = \"http://example.com/downloads/\"+file;
}
众所周知,当我调用函数时,浏览器仅提示下载对话框,而不会中断我的应用程序流。我要确定的是何时完成下载或取消下载。 应该有类似
onLoad
onFinishedLoading
onConnectionEnd
之类的东西,但我找不到任何东西。     

解决方法

        如果以这种方式下载文件,则无法确定下载进度。 如果使用
XMLHttpRequest
下载文件,则可以侦听如下的负载,错误和进度事件:
function log(message) {
  return function () {
    alert(message);
  };
}

function download(file,callback) {
  var request = new XMLHttpRequest();
  request.responseType = \'blob\';
  request.open(\'GET\',file);
  request.addEventListener(\'load\',log(\'load \' + file));
  request.addEventListener(\'error\',log(\'error \' + file));
  request.addEventListener(\'progress\',log(\'progress \' + file));
  request.addEventListener(\'load\',function () {
    callback(request.response);
  });
  request.send();
}

function save(object,mime,name) {
  var a = document.createElement(\'a\');
  var url = URL.createObjectURL(object);
  a.href = url;
  a.download = name;
  a.click();
}

document.querySelector(\'#download\').addEventListener(\'click\',function () {
  download(\'test.pdf\',function (file) {
    save(file,\'application/pdf\',\'test.pdf\');
  });
});
<!DOCTYPE html>
<html>
  <head>
    <meta charset=\"UTF-8\">
  </head>
  <body>
    <button id=\"download\">Download</button>
    <script src=\"script.js\"></script>
  </body>
</html>
    

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