当前位置: 首页 > news >正文

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

【关键字】

@ohos.request、上传下载​

【写在前面】

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

【上传开发步骤】

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

"reqPermissions": [{"name": "ohos.permission.INTERNET"}
]        

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

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接口有返回数据,上传下载接口回调是否可以获取返回的数据?

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

http://www.lryc.cn/news/121466.html

相关文章:

  • github版面混乱加载不出的解决办法
  • dotNet 之数据库sqlite
  • 走近ChatGPT与类似产品:原理解析与比较
  • HarmonyOS SDK开放能力,服务鸿蒙生态建设,打造优质应用体验
  • 数字经济对产业结构升级和创业增长的影响(2011-2021年)
  • GPT-4助力数据分析:提升效率与洞察力的未来关键技术 | 京东云技术团队
  • Zabbix6 对接飞书告警
  • Javascript异步编程的4种方法
  • 【MySQL】表的内外连接
  • 详解Mysql——第一篇/连接查询
  • uniapp获取屏幕宽度时 获取不到移动设备中内容盒子宽度
  • 篇十二:代理模式:控制对象访问
  • P1657 选书
  • 代码随想录第46天 | 139. 单词拆分、多重背包
  • Unreal View Model结合GAS使用
  • Spring-Cloud-Loadblancer详细分析_2
  • uniapp 左右滑动切换页面并切换tab
  • FinClip 支持小程序维度域名配置;桌面端体验活动进行中
  • 已有公司将ChatGPT集成到客服中心以增强用户体验
  • 108. 将有序数组转换为二叉搜索树
  • 视频分辨率: UXGA/SVGA/VGA/QVGA/QQVGA
  • Leecode力扣27数组移除元素
  • 百度云盘发展历程与影响
  • SpringBoot复习:(33)WebMvcAutoconfiguration内部静态类WebMvcAutoConfigurationAdapter
  • f1tenth仿真2
  • exec族函数
  • dbm与mw转换
  • 【Linux】多线程之单例模式
  • Vision Transformer模型入门
  • 如何使用 Go 获取 URL 的参数,以及使用时的问题