【HarmonyOS】@ohos.request 上传下载的那些事儿

【关键字】

@ohos.request、上传下载​

【写在前面】

在进行HarmonyOS应用开发时,可能需要进行上传或下载文件功能开发,本文章主要进行上传下载相关功能介绍和一些注意事项及FAQ。

【上传开发步骤】

步骤1:上传下载接口需要申请ohos.permission.INTERNET权限,如下:

javascript 复制代码
"reqPermissions": [
      {
        "name": "ohos.permission.INTERNET"
      }
]        

步骤2:API9以下版本调用request.upload接口,API9可以调用request.uploadFile接口,参数详见官方文档说明,代码如下:

javascript 复制代码
let file = {
            filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg"
        };
        let uploadTask;
        request.upload({
            url: 'http://xxx/upload/',
            header: {},
            method: "POST",
            files: [file],
            data: [
                {
                    name: "test", value: "value"
                }
            ]
        }).then((data) => {
            console.error('test data: ' + JSON.stringify(data));
            uploadTask = data;
            // 可通过progress判断进度是否完成,uploadedSize等于totalSize表示上传成功
            // API9可通过complete监听上传任务是否完成
            uploadTask.on('progress', function callback(uploadedSize, totalSize) {
                console.info("upload totalSize:" + totalSize + "  uploadedSize:" + uploadedSize);
            });
        }).catch((err) => {
            console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
        })

步骤3:上传任务是否完成可根据API版本,参考文档使用不同接口进行监听,走到监听回调即表示文件上传成功了。

【下载开发步骤】

下载功能开发同上传类似,同样需要申请ohos.permission.INTERNET权限,再根据不同API版本,参考文档调用不同接口即可;官方文档每个接口均有示例说明,此处不再赘述。

【参考文档】

上传下载:文档中心

【FAQ】

问题1:使用download下载功能,文件较大时,将应用切换到后台,发现下载任务停止了,如何才能让应用运行在后台时,保持下载功能?

----可将downloadTask变量定义为全局变量,若非全局变量,在应用运行后台时,会导致task任务终止,即下载任务停止。同理,上传功能也一样处理。

问题2:上传或下载过程中,on('progress') 任务进度监听会走几次?

----on('progress') 仅用于显示上传下载进度,若网速情况良好或者文件大小不是很大的情况下,progress可能仅回调一次,回调次数与网速与下载文件大小均有关系

问题3:若http接口有返回数据,上传下载接口回调是否可以获取返回的数据?

----上传下载接口仅支持进行文件上传和下载功能,接口回调仅用于监听上传下载是否完成,无法在回调中接收数据。

相关推荐
无限码力1 小时前
华为校招笔试真题 10.28 - 稀疏整数求和(C++/Py/Java /Js/Go)
华为·华为笔试真题·华为校招笔试真题·华为校招笔试·华为非ai岗笔试真题
贾伟康2 小时前
【共创稿事节】HarmonyOS 7.0 HiTraceChain分布式调用链:从接入到生产验证
分布式·harmonyos·可观测性·调用链·hitracechain
无限码力2 小时前
华为校招笔试真题 10.28 - 运输中转站计数(C++/Py/Java /Js/Go)
华为·华为笔试真题·华为校招笔试真题·华为秋招笔试真题·华为校招算法笔试题
熊猫钓鱼>_>12 小时前
碰一碰无网近场文件快传与断点续传【鸿蒙心迹】
华为·交互·harmonyos·arkts·鸿蒙·openharmony·鸿蒙心迹
每天进步一点点km16 小时前
自用-牛客网-华为机试编程模拟题1-python
华为od·华为·面试
懿路向前17 小时前
唤醒工作台全实录(一):立项——化性起伪与三条设计原则
人工智能·华为
hhhjhl19 小时前
开源鸿蒙平台 KMP_CMP 三方库「Clikt」适配全流程
华为·开源·harmonyos
熊猫钓鱼>_>20 小时前
四种书签,一条时间线:一个读书 App 的记忆颗粒与它的边界案例【鸿蒙心迹】
开发语言·华为·ai编程·harmonyos·鸿蒙·openharmony·鸿蒙pc
Goway_Hui20 小时前
【KMP for OpenHarmony】-- 在鸿蒙工程中使用 Apollo-Kotlin
华为·kotlin·harmonyos
正在走向自律1 天前
HarmonyOS 手机/平板远程控制 Windows 电脑实践指南
智能手机·电脑·harmonyos·todesk·远程工具