【问题标题】:How to download in multipart and merge files in javascript?如何在javascript中多部分下载和合并文件?
【发布时间】:2021-03-10 07:09:52
【问题描述】:

我正在为需要下载大文件的电子 js 项目开发下载管理器。

很遗憾,multipart-download 软件包不支持暂停或取消下载。 还有其他使用 Fetch 或 Axios 或任何支持暂停和取消的解决方案吗?

【问题讨论】:

    标签: javascript electron multipart


    【解决方案1】:

    您是否考虑过使用异步函数?你可以用 JS Promise 做很多事情。

    https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

    【讨论】:

    • 我不确定 Promises 是否可以帮助下载多个部分中的单个
    • 视频和大型 zip 文件
    • 我主要使用 blob,但应该与将视频分割成块非常相似。尔格: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; }
    【解决方案2】:

    编写您自己的下载器实现的有用信息: HTML5 File API downloading file from server and saving it in sandbox 所以你需要通过 XMLHttpRequest 下载文件,使用 HTML5 FileAPI 和streamsaver 你可以将它保存到客户端文件沙箱中。对于暂停,您应该中止请求并使用 Content-Range 标头 (Range requests) 发出另一个请求。当然,后端也应该支持它们。

    【讨论】:

    • 描述说它是用于上传
    • @SaiKrishna 哎呀。我漫不经心地读了起来。在这种情况下,您似乎必须编写自己的实现。很少有死的 npm 包,但我不确定使用它是一个好主意(su-downloader3-enhance,cordova-plugin-pause-resume-download)。我不知道稳定和流行的实现,根据 StackOverflow(stackoverflow.com/questions/47507608/… 没有人知道。但如果您有大约一周的时间为客户端和服务器双方编写自己的实现,这是可能的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-16
    • 2015-12-07
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    相关资源
    最近更新 更多