UE4 HTTP 断点续传

这里先看下别人的思路,总体感觉比较清晰:

1 拿到一个下载任务后,先请求一次文件信息,需要得到文件长度Content-Length,请求ETag、最终更新时间或服务端自行生成文件md5等信息作为该下载任务文件的唯一标识(这样可以防止如果两次下载间隙,源文件更换导致的问题),并在定好的路径下创建以唯一标识为名称的文件夹以存放文件分片。

2 一个子任务类,存放子任务ID,需要请求的range,字节大小等数据。该类的对象负责请求一个任务分片,并对请求好的数据按标识序号进行存储

FString SubTaskFileName = MD5Str + TEXT("_") + FString::FromInt(TaskID) + TEXT(".hcf");
FFileHelper::SaveArrayToFile(RawData, *(CurFilePath / SubTaskFileName));

3 根据实际需要确认每个分片的大小,将请求得来的文件长度除以分片大小分为数个子任务,将这些子任务逐个创建,分配请求数据范围,并执行下载请求,下载结束后标记状态为已下载。

4 如果下载中断,重新下载,则执行同样的流程,会尝试读取本地该标识的文件夹,读取已下载的部分,同样进行已下载标记,然后继续下载。

5 每次下载完分片后对维护的所有子任务数组进行判断,如果全部为已下载状态,则将所有下载完成的分片进行按ID拼接,存储至目标文件。

6 清理临时文件。
————————————————

这里放上大神的原文
原文链接:https://blog.csdn.net/qq_43034470/article/details/116741198

本人还找了B站的大神开发断点续传插件的视频,待验证。链接在这里:
[https://www.bilibili.com/video/BV1XK411A7x8?p=1&vd_source=0ddc1e4b409f43460af9cf5033f8155f]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值