如何解决我如何知道从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 举报,一经查实,本站将立刻删除。