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]

猜你喜欢

转载自blog.csdn.net/weixin_41130251/article/details/126133639