V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
serge001
V2EX  ›  前端开发

ajax 下载大文件(>1Gb)的骚操作具体是如何实现的呢?

  •  
  •   serge001 · 2019-06-02 09:59:04 +08:00 · 3028 次点击
    这是一个创建于 1761 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://mega.nz/#!6GBzRQbI!MFny6SMTykaLPBxLvjTHg7hQDdYf_AQFtBYzOtmdMKk

    目测是将文件分成 16Mb 的 chunk,然后每次并发 5 个请求,然后再把文件拼起来,然后创建 a 标签调用浏览器的下载,但是具体的实现细节是怎样的呢?比如怎么将文件拼起来,服务器端要怎么处理呢?

    2 条回复    2019-06-02 10:11:07 +08:00
    KasuganoSoras
        1
    KasuganoSoras  
       2019-06-02 10:10:05 +08:00
    以前我试过 AJAX 下载文件,把文件分成多个块然后编码成 Base64,浏览器端 AJAX 请求储存到本地,解码以后存到一个变量里,继续下载下一个块,再解码,加入到变量……直到下载完最后一个块,再回编码成一个 Base64,然后用 data:<MIME>;base64,<Base64> 来下载,不过如果文件很大的时候这个方法可能会很卡。。。
    推荐用 WebSocket
    acehow
        2
    acehow  
       2019-06-02 10:11:07 +08:00 via Android   ❤️ 1
    文件名都是按顺序的。拼的时候就是按文件名取文件的二进制数据拼成一个就行了,拼完校验下 hashsum 值就完了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1186 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:07 · PVG 07:07 · LAX 16:07 · JFK 19:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.