自定义下载管理器javascript

Pot*_*Ion 9 javascript prompt file download

名为mega.com的文件共享网站具有创建自定义下载管理器的功能.下载文件时,它会在网站上显示自定义进度条(可能是将文件加载到缓存中),然后为缓存文件创建下载提示.如何用javascript生成这个?

Luk*_*uke 14

据我所知,Mega.com使用这个内部下载管理器,因为它们以加密形式将数据存储在他们的服务器上; 加密和解密发生在浏览器中.

存储

您可以使用IndexedDB存储二进制数据.这是Mozilla的一个教程,解释了如何使用AJAX下载图像并将其保存在IndexedDB中.

当您将数据存储在IndexedDB中时,您应该有机会下载它(从内部浏览器存储).在这里,您可以阅读如何创建下载提示.

进度条

使用时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
  }
}
Run Code Online (Sandbox Code Playgroud)

如果服务器未Content-Length使用标头发送,则文件的总大小将不可用.

关于MDN的完整源代码和描述.