lingochamp / FileDownloader

Multitask、MultiThread(MultiConnection)、Breakpoint-resume、High-concurrency、Simple to use、Single/NotSingle-process
Apache License 2.0
11.02k stars 2.2k forks source link

关于不同url断点续传问题 #1308

Open yuyisummer opened 4 years ago

yuyisummer commented 4 years ago

项目中遇到一个断点续传的问题,文件存放于阿里云上,url是有时效的,每隔半个小时更新一次,实际做测试的时候,发现前一个时效url下载未完成的情况下,重新申请新的url下载无法从断点处下载,url里Etag的值都是一致的,为什么会出现这种情况呢?

yuyisummer commented 4 years ago

因为时效变更,url里该字段的数据发生了改变:?Expires=1575642600&

rantianhua commented 4 years ago

因为 url 变了,默认 FileDownloader 计算的 id 就变了,FileDownloader 认为是两个不同的 Task 了。

rantianhua commented 4 years ago

你可自定义生成 id 的方式,让这两个 url 生成的 id 一样。

rantianhua commented 4 years ago

自定义方式可见:https://github.com/lingochamp/FileDownloader/wiki/Customizable-Component IdGenerator 部分。

yuyisummer commented 4 years ago

自定义方式可见:https : //github.com/lingochamp/FileDownloader/wiki/Customizable-Component IdGenerator部分。

感谢,调整了ID的生成方式后测试是可以用的。但还是有疑问,为什么框架里不直接通过两个url中携带的Etag值来判断是否进行断点续传呢?

rantianhua commented 4 years ago

单个任务确实是自动通过 Etag 来完成断点续传的一部分。不过任务间确实没有进行这种关联,这也是一种思路。

yuyisummer commented 4 years ago

个别任务确实是自动通过Etag来完成断点续传的一部分。不过任务间确实没有进行这种关联,这也是一种思路。

收到,非常感谢