• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 上传和下载
2
3### 介绍
4本示例使用[@ohos.request](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-request.md)接口创建上传和下载任务,实现上传、下载功能,hfs作为服务器,实现了文件的上传和下载和任务的查询功能。
5
6### 效果预览
7
8|               主页               |             上传             |             片段上传             |                 下载                 |                 证书锁定                 |
9| :---------------------------------------: | :---------------------------------------: | :--------------------------------------: | :--------------------------------------: | ---------------------------------------- |
10|    ![home](screenshots/devices/zh/home.jpg)    | ![util](screenshots/devices/zh/upload.jpg) | ![util](screenshots/devices/zh/uploadchunk.jpg) | ![convertxml](screenshots/devices/zh/download.jpg) | ![cert_lock](screenshots/devices/zh/cert_lock.jpg) |
11
12使用说明
13
141.本示例功能需要先配置服务器环境后使用,具体配置见[上传下载服务配置](./environment)。
15
162.首页展示上传、下载和证书锁定三个入口组件,点击进入对应的页面,如果要使用后台下载任务,请开启后台任务开关。
17
183.上传页面:
19
20点击 **+**,**从相册选择**拉起图库选择照片,图片选择页面支持拍照,选择照片后点击**上传**进行上传。
21
22可选的,点击缩略图,显示文件片段上传配置选项弹窗,可以配置上传起点和终点,取值为闭区间;起点默认为0,终点默认为文件结尾。点击**上传**进行选中文件片段以及后续文件全部内容上传。
23
24点击**返回**键或片段上传配置选项弹窗外区域,取消片段上传。
25
26在首页中打开后台任务开关后,上传页面开启的是后台上传任务,后台任务在应用退出到后台时可以在通知栏看到任务状态。
27
28后台上传**暂停**时,需要服务器支持上传暂停服务(HFS暂不支持此操作)。如仍然使用HFS作为服务器,此时HFS服务将中断文件写入,立即将当前传输的数据保存为文件片段。点击**继续**时则会重新生成一份文件,并在新文件中开始写入。
29
304.下载页面:
31
32点击文件列表选择要下载的文件后,点击**下载**选择指定路径后开始下载。
33
34点击**查看下载文件**进入下载文件页面,点击文件夹查看文件夹内的文件。
35
36在首页中打开后台任务开关后,下载页面开启的是后台下载任务,后台任务在应用退出到后台时可以在通知栏看到任务状态。
37
38前台下载时只支持单文件下载,后台下载时支持选择多个文件下载。
39
40后台下载**暂停**时,本示例功能将自动记录断点。此时HFS服务仍会进行一定时间的传输,但是传输的数据并不会被接受。点击**继续**后将会从上次暂停的断点继续下载。
41
425.证书锁定页面:
43
44点击**下载**按钮会使用get方式访问百度,并在空白处显示返回的响应header内容。
45
46点击**上传**按钮会使用post方式访问百度,并在空白处显示返回的响应header内容。
47
48以上功能需要在src/main/resources/base/profile/network_config.json中配置domains和digest,只有你配置的证书信息通过验证,上传和下载才可以正常响应;否则将无法正常访问百度,会通过toast提示上传或者下载失败,日志中会有具体错误信息。如果你要访问的服务器根证书不在系统中,你需要把它的根证书放到src/main/resources/resfile目录下。
49
50
51
52### 工程目录
53
54```
55UploadAndDownload
56├── AppScope
57│   └── app.json5                               //APP信息配置文件
58├── entry/src/main                              //应用首页
59│   ├── ets
60│   │   ├── entryability
61│   │   ├── components                          //自定义组件
62│   │   ├── pages
63│   │   │   ├── Index.ets                       //主页入口
64│   │   │   ├── Download.ets                    //下载页面
65│   │   │   ├── DownloadFiles.ets               //查看下载文件页面
66│   │   │   ├── Upload.ets                      //上传页面
67│   │   │   ├── CertLock.ets                    //证书锁定页面
68│   └── module.json5
6970├── features/uploadanddownload/src/main         //上传和下载
71│   ├── ets
72│   │   ├── Index.ets                           //对外提供的接口列表
73│   │   ├── components
74│   │   │    └── FileBrowse.ets                 //查看下载文件组件
75│   │   ├── download                            //下载任务相关
76│   │   ├── upload                              //上传任务相关
77│   │   ├── utils                               //相关工具类
78│   └── module.json5
79```
80
81### 具体实现
82
83* 该示例分为三个模块:
84  * 上传模块
85    * 使用[@ohos.request](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-request.md)中API 12接口agent.create创建上传任务,调用@ohos.request中的Task相关接口实现上传任务的创建、取消、进度加载,失败的任务会调用查询接口获取失败原因并打印在日志中,支持多个文件上传及片段上传。
86    * 源码链接:[RequestUpload.ets](./features/uploadanddownload/src/main/ets/upload/RequestUpload.ets),[AddPictures.ets](./entry/src/main/ets/components/AddPictures.ets),[Upload.ets](./entry/src/main/ets/pages/Upload.ets)
87    * 参考接口:[@ohos.request](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-request.md),[@ohos.file.picker](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-file-picker.md)
88
89  * 下载模块
90
91    * 使用[@ohos.request](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-request.md)中API 12接口agent.create创建上传任务,调用@ohos.request中的Task相关接口实现上传任务的创建、取消、进度加载,失败的任务会调用查询接口获取失败原因并打印在日志中,前台下载任务只支持单个文件下载,后台下载任务支持多文件下载。使用[@ohos.file.fs](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-file-fs.md)完成指定路径的创建和查询已下载的文件。
92    * 源码链接:[RequestDownload.ets](./features/uploadanddownload/src/main/ets/download/RequestDownload.ets),[Download.ets](./entry/src/main/ets/pages/Download.ets),[FileUtils.ets](./features/uploadanddownload/src/main/ets/utils/FileUtils.ets),[FileBrowse.ets](./features/uploadanddownload/src/main/ets/components/FileBrowse.ets)
93    * 参考接口:[@ohos.request](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-request.md),[@ohos.file.fs](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-core-file-kit/js-apis-file-fs.md)
94
95  * 证书锁定模块
96
97    * 使用[@ohos.request](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-request.md)中API 12接口agent.create创建上传任务,调用@ohos.request中的Task相关接口实现通过get或者post方式访问指定的网页,点击按钮后会在空白处显示返回的响应header内容。你需要提前在src/main/resources/base/profile/network_config.json中配置domains和digest,只有你配置的证书信息通过验证,上传和下载才可以正常响应。如果你要访问的服务器根证书不在系统中,你需要把它的根证书放在src/main/resources/resfile目录下。
98
99    * 源码链接,[CertLock.ets](./entry/src/main/ets/pages/CertLock.ets)
100
101    * 参考接口:[@ohos.request](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-request.md)
102
103
104
105
106
107### 相关权限
108
109[ohos.permission.INTERNET](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioninternet)
110
111[ohos.permission.READ_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionread_media)
112
113### 依赖
114
115[上传下载服务配置](./environment)。
116
117### 约束与限制
118
1191.本示例仅支持标准系统上运行,支持设备:RK3568。
120
1212.本示例为Stage模型,支持API12版本SDK,SDK版本号(API Version 12),镜像版本号(5.0)
122
1233.本示例需要使用DevEco Studio 版本号(4.1 Release)及以上版本才可编译运行。
124
1254.运行本示例需全程联网。
126
127###  下载
128
129如需单独下载本工程,执行如下命令:
130
131```bash
132git init
133git config core.sparsecheckout true
134echo code/BasicFeature/Connectivity/UploadAndDownload/ > .git/info/sparse-checkout
135git remote add origin https://gitee.com/openharmony/applications_app_samples.git
136git pull origin master
137```