如何用断点续传的方式下载文件?

问题场景:

使用request.downloadFile文件下载 下载到一半推出app

重新进入下载 出现{ {"code":13400002} 是否不支持断点下载和续传

有没有支持断点下载和续传的类?

阅读 602
1 个回答

解决方案 :

断点续传的实现需要依赖于服务器,客户端仅支持通过设置下载的开始位置和结束位置来控制是否断点续传

begins和ends当前能实现基础的分段上传下载能力,完整的断点续传功能当前需要由开发这边来实现具体的下载拼接逻辑。

overwrite若设置为false则在第二次下载时会报错:文件已存在,若设置为true则会覆写此文件;

具体实现逻辑可参考:设置overwrite为true,下载中断后需要一个逻辑重命名并将两次下载文件进行拼接,下载完成并拼接后覆盖之前的下载文件。

参考代码:

let config: request.agent.Config = {
action: request.agent.Action.DOWNLOAD,
url: 'https://test.com/jdk-21_linux-aarch64_bin.tar.gz',
title: 'taskOnTest',
description: 'Sample code for event listening',
mode: request.agent.Mode.FOREGROUND,
overwrite: false,
method: "GET",
data: '',
saveas: "./",
network: request.agent.Network.WIFI,
metered: false,
roaming: true,
retry: true,
redirect: true,
index: 0,
begins: 0,
ends: -1,
gauge: false,
precise: false,
token: "it is a secret"
};
request.agent.create(getContext(), config).then((task: request.agent.Task) => {
task.on('progress', (progress: request.agent.Progress) => {
console.info('upload task progress:' + progress);
});
task.on('completed', (progress: request.agent.Progress) => {
console.info('upload task completed:' + progress);
});
task.on('failed', (progress: request.agent.Progress) => {
console.info('upload task failed:' + progress);
});
task.start(() => {
console.info('start task success');
})
console.info(`Succeeded in creating a upload task. result: ${task.tid}`);
}).catch((err: BusinessError) => {
console.error(`Failed to create a upload task, Code: ${err.code}, message: ${err.message}`);
});
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进