名为mega.com的文件共享网站具有创建自定义下载管理器的功能。下载文件时,它会在网站上显示自定义进度条(可能是将文件加载到缓存中),然后为缓存文件创建下载提示。如何用javascript生成它?
答案 0 :(得分:14)
据我所知,Mega.com使用这个内部下载管理器,因为它们以加密形式将数据存储在服务器上;加密和解密发生在浏览器中。
您可以使用IndexedDB存储二进制数据。这是一个tutorial from Mozilla,解释了如何使用AJAX下载图像并将其保存在IndexedDB中。
当您将数据存储在IndexedDB中时,您应该有机会下载它(从内部浏览器存储)。 Here you can read,如何创建下载提示。
使用XMLHttpRequest
时,您可以通过为progress
事件提供处理程序来获得下载进度。
var oReq = new XMLHttpRequest();
oReq.addEventListener("progress", updateProgress, false);
[...]
function updateProgress (oEvent) {
if (oEvent.lengthComputable) {
var percentComplete = oEvent.loaded / oEvent.total;
// ...
} else {
// Unable to compute progress information since the total size is unknown
}
}
如果服务器没有发送带有标题的Content-Length
,则文件的总大小将不可用。
答案 1 :(得分:1)
您的问题有完整的答案:http://tonistiigi.github.io/mega/。
如果您想在JavaScript
中创建下载管理器,这些文章将帮助您完成工作:
如果您想创建文件下载进度,请转到以下链接:Javascript source file download progress?。
请将更多的想法,时间和精力投入到您的工作中。如果你不能,请在我自己的回答后发表评论;我会帮你详细做。