• 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) | ![convertxml](screenshots/devices/zh/download.jpg) |
11
12使用说明
13
141.本示例功能需要先配置服务器环境后使用,具体配置见[上传下载服务配置](./environment)。
15
162.首页展示上传和下载两个入口组件,点击进入对应的页面,如果要使用后台下载任务,请开启后台任务开关。
17
183.上传页面:
19
20​    点击**+**,**从相册选择**拉起图库选择照片,图片选择页面支持拍照,选择照片后点击发表进行上传。
21
22​    在首页中打开后台任务开关后,上传页面开启的是后台上传任务,后台任务在应用退出到后台时可以在通知栏看到任务状态。
23
244.下载页面:
25
26​    点击文件列表选择要下载的文件后,点击**下载**选择指定路径后开始下载。
27
28​    点击**查看下载文件**进入下载文件页面,点击文件夹查看文件夹内的文件。
29
30​    在首页中打开后台任务开关后,下载页面开启的是后台下载任务,后台任务在应用退出到后台时可以在通知栏看到任务状态。
31
32​    前台下载时只支持单文件下载,后台下载时支持选择多个文件下载。
33
34### 工程目录
35
36```
37UploadAndDownload
38├── AppScope
39│   └── app.json5                               //APP信息配置文件
40├── entry/src/main                              //应用首页
41│   ├── ets
42│   │   ├── entryability
43│   │   ├── components                          //自定义组件
44│   │   ├── pages
45│   │   │   ├── Index.ets                       //主页入口
46│   │   │   ├── Download.ets                    //下载页面
47│   │   │   ├── DownloadFiles.ets               //查看下载文件页面
48│   │   │   ├── Upload.ets                      //上传页面
49│   └── module.json5
5051├── features/uploadanddownload/src/main         //上传和下载
52│   ├── ets
53│   │   ├── Index.ets                           //对外提供的接口列表
54│   │   ├── components
55│   │   │    └── FileBrowse.ets                 //查看下载文件组件
56│   │   ├── download                            //下载任务相关
57│   │   ├── upload                              //上传任务相关
58│   │   ├── utils                               //相关工具类
59│   └── module.json5
60```
61
62### 具体实现
63
64* 该示例分为两个模块:
65  * 上传模块
66    * 使用[@ohos.request](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-request.md)中API 10接口agent.create创建上传任务,调用@ohos.request中的Task相关接口实现上传任务的创建、取消、进度加载,失败的任务会调用查询接口获取失败原因并打印在日志中,支持多个文件上传。
67    * 源码链接:[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)
68    * 参考接口:[@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)
69  * 下载模块
70    * 使用[@ohos.request](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-basic-services-kit/js-apis-request.md)中API 10接口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)完成指定路径的创建和查询已下载的文件。
71    * 源码链接:[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)
72    * 参考接口:[@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)
73
74### 相关权限
75
76[ohos.permission.INTERNET](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissioninternet)
77
78[ohos.permission.READ_MEDIA](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/security/AccessToken/permissions-for-all.md#ohospermissionread_media)
79
80### 依赖
81
82[上传下载服务配置](./environment)。
83
84### 约束与限制
85
861.本示例仅支持标准系统上运行,支持设备:RK3568。
87
882.本示例为Stage模型,支持API10版本SDK,SDK版本号(API Version 10 Release),镜像版本号(4.0 Release)
89
903.本示例需要使用DevEco Studio 版本号(4.0 Release)及以上版本才可编译运行。
91
924.运行本示例需全程联网。
93
94###  下载
95
96如需单独下载本工程,执行如下命令:
97
98```
99git init
100git config core.sparsecheckout true
101echo code/BasicFeature/Connectivity/UploadAndDownload/ > .git/info/sparse-checkout
102git remote add origin https://gitee.com/openharmony/applications_app_samples.git
103git pull origin master
104```