使用Javascript从服务器下载大文件
我使用AWS s3存储文件,并提供从客户端浏览器下载文件的功能 我使用了多种方法下载该文件使用Javascript从服务器下载大文件,javascript,jquery,html,amazon-web-services,downloadfile,Javascript,Jquery,Html,Amazon Web Services,Downloadfile,我使用AWS s3存储文件,并提供从客户端浏览器下载文件的功能 我使用了多种方法下载该文件 使用Ajax调用 使用Ajax调用,首先我调用API从服务器获取文件blob,然后为该blob创建URL并将其交给锚定标记下载 它工作正常,但这里的问题是Ajax调用首先在后台下载内容,然后再将其提供给锚定标记。因此,很难向用户解释这需要花费的时间 代码如下:- var URL = $window.URL || $window.webkitURL || $window.mozURL || $window
var URL = $window.URL || $window.webkitURL || $window.mozURL || $window.msURL;
if (URL) {
// IE10+
if (navigator.msSaveBlob) {
return navigator.msSaveOrOpenBlob(fileBlob, fileName);
} else {
var downloadLink = document.createElement('a');
downloadLink.setAttribute('style', "display: none");
downloadLink.setAttribute('href', URL.createObjectURL(fileBlob));
downloadLink.setAttribute('download', fileName);
document.body.appendChild(downloadLink);
downloadLink.click();
setTimeout(function () {
document.body.removeChild(downloadLink);
}, 10);
}
}
var downloadLink = document.createElement('a');
downloadLink.setAttribute('style', "display: none");
downloadLink.setAttribute('href', `/download?id=${id}`);
downloadLink.setAttribute('download', fileName);
document.body.appendChild(downloadLink);
downloadLink.click();
setTimeout(function () {
document.body.removeChild(downloadLink);
}, 10);
总而言之,我想提高大文件的下载速度
问题:-
我希望我的问题很清楚,如果有什么不清楚的地方,请告诉我。#2是最好的解决方案。下载文件404s或HTML错误页面的情况是服务器配置问题,不应该在客户端JS中处理。关于速度/延迟,这又是一个与JS无关的服务器带宽/位置问题。Rory,我们如何配置服务器来处理错误?如果API失败,我只想不下载任何东西。很抱歉,我没用过AWS,所以我帮不了你。然而,维护文件引用和知道文件何时被删除而不链接到它取决于您的代码。除了服务器关闭或服务器重新启动之外,我可以处理其他错误。在这种情况下,客户端和服务器之间将没有连接。