关于断点续传

79 天前
 humbass

最近一个项目要用到大文件的断点续传,多大文件呢,大的包可能会有 20G ,目前的做法是

前端取到文件后,按 2m 一个片段进行分片,然后逐个上传 后端收到完整的文件后放在一个隐藏的目录内,等最后的文件传完之后,逐一合并,并移动到指定的文件夹

实现是实现了,最大的问题不是上传,而是合并以及转移文件相当消耗时间

有没有更高级的做法呢?

4902 次点击
所在节点    Node.js
53 条回复
jiangzm
78 天前
@humbass #15 不需要告诉客户端怎么传,而是客户端怎么传告诉服务端。根据分片的大小,分片的索引可以计算 offset ,有 offset 不就可以直接写入了。 你最后上传完合并不也要确定分片的顺序吗, 在等待的过程完全可以边写边传。
netnr
78 天前
okakuyang
78 天前
这些不都是基操吗,检查下自己代码,怕不是有 bug
hetal
78 天前
rsync 不行么?
zhaokun
77 天前
内网搭建一台开源的对象存储
zhaokun
77 天前
为啥要等都上传完了再合并,可以上传一点合并一点呀,顺序不对的就等着呗,合并完再移?不是直接在目标文件夹下直接合并吗?
humbass
77 天前
@netnr 这个倒是新东西,俺研究下看看,thx
victimsss
75 天前
--- 因为是企业内网网络(含广义上的内网)使用,不能使用第三方的云端存储。
第三方和内不内网有什么关系吗,贵司平时不是用支持私有部署的服务吗
heiya
75 天前
@trzzzz hi ,我还是没 get 到弱网环境下的问题。实际在上传时后端会维护一个 uploadId 下的已上传分片数组,客户端(我这边是 windows 客户端)会根据这个数组尝试重试机制。所以无论网络环境如何、是否是并发上传,只要客户端能正确处理这个数组就可以。
trzzzz
75 天前
@heiya 这个是发生在 server 端,server 端透传走客户端传的流(弱网是在 server 端 到 其它地方,比如对象存储)
heiya
74 天前
@trzzzz thanks~
dode
74 天前
分块上传,并且要求按顺序上传,服务器顺序写入追加就行了
dode
74 天前
客户端按固定大小分块上传,直至文件结束

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1067088

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX