在Harmony NEXT应用中,如何实现应用的离线下载和断点续传功能?
本文参与了【 HarmonyOS NEXT 技术问答冲榜,等你来战!】,欢迎正在阅读的你也加入。
在Harmony NEXT应用中,如何实现应用的离线下载和断点续传功能?
本文参与了【 HarmonyOS NEXT 技术问答冲榜,等你来战!】,欢迎正在阅读的你也加入。
1 回答869 阅读✓ 已解决
1 回答1.2k 阅读
1 回答1k 阅读
1 回答955 阅读
1 回答921 阅读
1 回答826 阅读
1 回答776 阅读
断点续传的实现需要依赖于服务器,客户端仅支持通过设置下载的开始位置和结束位置来控制是否断点续传。
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) => {
});
task.on('completed', (progress: request.agent.Progress) => {
});
task.on('failed', (progress: request.agent.Progress) => {
});
task.start(() => {
})
console.info(
cwq Succeeded in creating a upload task. result: ${task.tid}
);}).catch((err: BusinessError) => {
console.error(
cwq Failed to create a upload task, Code: ${err.code}, message: ${err.message}
);});