【发布时间】:2021-03-10 07:09:52
【问题描述】:
我正在为需要下载大文件的电子 js 项目开发下载管理器。
很遗憾,multipart-download 软件包不支持暂停或取消下载。 还有其他使用 Fetch 或 Axios 或任何支持暂停和取消的解决方案吗?
【问题讨论】:
标签: javascript electron multipart
我正在为需要下载大文件的电子 js 项目开发下载管理器。
很遗憾,multipart-download 软件包不支持暂停或取消下载。 还有其他使用 Fetch 或 Axios 或任何支持暂停和取消的解决方案吗?
【问题讨论】:
标签: javascript electron multipart
您是否考虑过使用异步函数?你可以用 JS Promise 做很多事情。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
【讨论】:
createChunks = (file,cSize/* cSize should be byte 1024*1 = 1KB */) => { let startPointer = 0; let endPointer = file.size; let chunks = []; while(startPointer<endPointer){ let newStartPointer = startPointer+cSize; chunks.push(file.slice(startPointer,newStartPointer)); startPointer = newStartPointer; } return chunks; }
编写您自己的下载器实现的有用信息: HTML5 File API downloading file from server and saving it in sandbox 所以你需要通过 XMLHttpRequest 下载文件,使用 HTML5 FileAPI 和streamsaver 你可以将它保存到客户端文件沙箱中。对于暂停,您应该中止请求并使用 Content-Range 标头 (Range requests) 发出另一个请求。当然,后端也应该支持它们。
【讨论】: