1. Request下载文件简介
在前述文章鸿蒙HarmonyOS开发编程:使用HttpRequest下载文件到本地示例中,使用基础的HttpRequest模块演示了如何下载文件到本地,整个下载过程看起来好像不太复杂,但是,如果考虑到可靠性、网络问题以及文件类型和大小的差异,开发难度还是相当大的,幸运的是,鸿蒙提供了专门用来进行上传下载的API,把这些复杂性都封装了起来,这就是本示例要使用的request部件。
2. request的常用方法
鸿蒙封装的request对象位于模块request中,使用如下的方式导入:
import request from '@ohos.request';
request模块包括了众多的对象和操作方法,就本文而言,重点需要掌握的是downloadFile方法:
downloadFile(context: BaseContext, config: DownloadConfig): Promise<DownloadTask>
该方法执行异步下载,使用promise形式返回结果,结果为DownloadTask类型。可以通过DownloadTask类型的on('complete'|'pause'|'remove')订阅任务下载时的状态信息,包括任务完成、暂停或移除。通过on('fail')可获取任务下载时的错误信息。
3. request下载示例
本文要下载的服务端网站和鸿蒙HarmonyOS开发编程:使用HttpRequest下载文件到本地示例中的网站一样,也是需要登录后才可以下载,本示例运行后的界面如图所示:
应用启动后首先配置用户名密码以及登录地址,然后单击“登录”按钮进行登录,成功登录后就可以单击“下载”按钮进行下载了,成功下载后会显示保存位置和下载的文件内容。
下面详细介绍创建该应用的步骤。
步骤1:创建Empty Ability项目。
步骤2:在module.json5配置文件加上对权限的声明:
"requestPermissions": [
{
"name": "ohos.permission.INTERNET"
}
]
这里添加了访问互联网的权限。
步骤3:在Index.ets文件里添加如下的代码:
import http from '@ohos.net.http';
import util from '@ohos.util';
import fs from '@ohos.file.fs';
import request from '@ohos.request';
import picker from '@ohos.file.picker';
@Entry
@Component
struct Index {
//连接、通讯历史记录
@State msgHistory: string = ''
//首页地址
@State downloadUrl: string = "http://192.168.100.101:8081/download?filename=demo.txt"
//登录地址
@State loginUrl: string = "http://192.168.100.101:8081/auth"
//用户名
@State loginName: string = "zhanglei"
//密码
@State passwd: string = "cangjie"
//下载到本地的路径
@State localFilePath: string = ""
scroller: Scroller = new Scroller()
sessionId: string = ""
build() {
Row() {
Column() {
Text("Request下载示例")
.fontSize(14)
.fontWeight(FontWeight.Bold)
.width('100%')
.textAlign(TextAlign.Center)
.padding(