• Home
Name Date Size #Lines LOC

..--

download/12-May-2024-8,6316,281

figures/12-May-2024-

test/download/12-May-2024-554548

upload/12-May-2024-4,7723,337

BUILD.gnD12-May-2024994 2824

LICENSED12-May-20249.9 KiB177150

OAT.xmlD12-May-20244 KiB6714

README.mdD12-May-2024965 3725

README_ZH.mdD12-May-202449 KiB840774

bundle.jsonD12-May-20241.5 KiB5757

README.md

1# miscservices_download
2
3#### Description
4{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
5
6#### Software Architecture
7Software architecture description
8
9#### Installation
10
111.  xxxx
122.  xxxx
133.  xxxx
14
15#### Instructions
16
171.  xxxx
182.  xxxx
193.  xxxx
20
21#### Contribution
22
231.  Fork the repository
242.  Create Feat_xxx branch
253.  Commit your code
264.  Create Pull Request
27
28
29#### Gitee Feature
30
311.  You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
322.  Gitee blog [blog.gitee.com](https://blog.gitee.com)
333.  Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
344.  The most valuable open source project [GVP](https://gitee.com/gvp)
355.  The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
366.  The most popular members  [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
37

README_ZH.md

1
2
3# 杂散子系统/Request服务
4
5##  简介
6
7### 内容介绍
8
9Request服务向三方应用提供系统下载/上传服务能力,以支撑应用开发者方便、高效地使用以及管理下载/上传业务的功能,包含新建、移除、暂停、恢复以及查询下载/上传任务。
10
11### 架构图介绍
12
13**图 1** 下载子系统架构图
14![](figures/download_architecture.png "子系统架构图")
15
16系统应用:依赖的系统应用如浏览器等。
17
18三方应用:依赖的第三方应用如淘宝等。
19
20Download API:提供下载功能的接口。
21
22IDL:提供NAPI之间的相互通信。
23
24下载服务:负责下载的具体过程,客户端发起一个下载请求,下载内部创建下载任务,处理下载请求并完成下载任务。
25
26DataAbility能力:用来保存每一次下载的记录。
27
28**图 2** 上传子系统架构图
29![](figures/subsystem_architecture_zh.png "子系统架构图")
30
31扩展/三方 应用:上传功能的客户端,是上传的发起方。
32JS接口:对外提供上传功能JS接口。
33本地接口:对外提供上传功能本地接口。
34上传任务:客户端每发起一个上传请求,上传内部都会创建一个上传任务,用于处理上传请求,转发服务器的上传应答。
35Curl适配:对三方库libcurl的一个封装。
36获取文件:根据客户端发起上传请求时传入的文件路径获取要上传的文件。
37libcurl: 三方库。
38DataAbility能力:DataAbility的使用方,用户获取DataAbility文件协议路径下的文件。
39
40## 目录
41
42```
43/base/miscservices/request
44├── figures                  # 架构图
45├── download/ability         # 下载服务数据库管理模块
46├── download/etc             # 下载服务包含的进程配置文件
47├── interfaces/kits/js/napi  # 本组件对外提供的下载服务接口代码
48│   └── download_single      # 下载服务的napi接口
49├── download/sa_profile      # 下载服务包含的系统服务的配置文件
50├── download/services        # 下载系统服务实现
51├── download/utils           # 下载服务包含日志打印和公共事件定义的常量
52├── upload/frameworks        # 上传服务功能实现
53├── upload/interfaces/kits   # 本组件对外提供的上传服务接口代码
54│   ├── js                   # 本组件js接口定义
55│   └── napi                 # 上传服务的napi接口
56└── upload/unitest           # 上传模块的单元测试
57```
58
59##  说明
60
61###  接口说明
62
63**表 1**  Request服务的主要接口
64
65<table><thead align="left"><tr id="row143351854201012"><th class="cellrowborder" valign="top" width="50%" id="mcps1.2.3.1.1"><p id="p103351154121010"><a name="p103351154121010"></a><a name="p103351154121010"></a>接口名</p>
66</th>
67<th class="cellrowborder" valign="top" width="50%" id="mcps1.2.3.1.2"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>描述</p>
68</th>
69</tr>
70</thead>
71<tbody>
72<tr id="row204321219392"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>download(config: DownloadConfig, callback: AsyncCallback&lt;DownloadTask&gt;): void</p>
73</td>
74<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>异步接口,用于文件下载,使用callback形式回调返回DownloadTask实例,该实例代表一个下载任务,用户可以通过该实例操作该下载任务,比如添加progress、complete、fail监听,暂停、恢复、移除和查询下载任务。</p>
75</td>
76</tr>
77<tr id="row13335054111017"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p12832214151418"><a name="p12832214151418"></a><a name="p12832214151418"></a>download(config: DownloadConfig): Promise&lt;DownloadTask&gt;</p>
78</td>
79<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p3335145451011"><a name="p3335145451011"></a><a name="p3335145451011"></a>异步接口,用于文件下载,使用promise形式回调返回DownloadTask实例,该实例代表一个下载任务,用户可以通过该实例操作该下载任务,比如添加progress、complete、fail监听,暂停、恢复、移除和查询下载任务。</p>
80</td>
81</tr>
82<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>upload(config: UploadConfig, callback: AsyncCallback&lt;UploadTask&gt;): void</p>
83</td>
84<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>异步接口,用于上传一组文件,使用callback形式回调返回UploadTask实例,该实例代表一个上传任务,用户可以通过该实例操作该上传任务,比如添加progress、headerReceive、fail监听,移除上传任务。</p>
85</td>
86</tr>
87<tr id="row13335054111018"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p12832214151418"><a name="p12832214151418"></a><a name="p12832214151418"></a>upload(config: UploadConfig): Promise&lt;UploadTask&gt;</p>
88</td>
89<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p3335145451011"><a name="p3335145451011"></a><a name="p3335145451011"></a>异步接口,用于上传一组文件,使用promise形式回调返回UploadTask实例,该实例代表一个上传任务,用户可以通过该实例操作该上传任务,比如添加progress、headerReceive、fail监听,移除上传任务。</p>
90</td>
91</tr>
92</tbody>
93</table>
94**表 2** DownloadTask的主要接口
95
96<table><thead align="left"><tr id="row143351854201012"><th class="cellrowborder" valign="top" width="50%" id="mcps1.2.3.1.1"><p id="p103351154121010"><a name="p103351154121010"></a><a name="p103351154121010"></a>接口名</p>
97</th>
98<th class="cellrowborder" valign="top" width="50%" id="mcps1.2.3.1.2"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>描述</p>
99</th>
100</tr>
101</thead>
102<tbody><tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>on(type: 'progress', callback:(receivedSize: number, totalSize: number) =&gt; void): void</p>
103</td>
104<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>开启下载任务进度监听,使用callback形式返回下载进度结果。多次调用的场合最后一次调用时传入的callback有效。</p>
105</td>
106</tr>
107<tr id="row13335054111018"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p12832214151418"><a name="p12832214151418"></a><a name="p12832214151418"></a>on(type: 'complete' | 'pause' | 'remove', callback:() =&gt; void): void</p>
108</td>
109<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p3335145451011"><a name="p3335145451011"></a><a name="p3335145451011"></a>开启下载任务状态:complete、pause、remove监听,使用callback形式返回。多次调用的场合最后一次调用时传入的callback有效。</p>
110</td>
111</tr>
112<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>on(type: 'fail', callback:(error: number) =&gt; void): void</p>
113</td>
114<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>开启下载任务fail监听,使用callback形式返回错误码。多次调用的场合最后一次调用时传入的callback有效。</p>
115</td>
116</tr>
117<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>off(type: 'progress', callback?:(receivedSize: number, totalSize: number) =&gt; void): void</p>
118</td>
119<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>关闭下载任务进度监听,使用callback形式返回结果。</p>
120</td>
121</tr>
122<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>off(type: 'complete' | 'pause' | 'remove', callback?:() =&gt; void): void</p>
123</td>
124<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>关闭下载任务状态:complete、pause、remove监听,使用callback形式返回结果。</p>
125</td>
126</tr>
127<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>off(type: 'fail', callback?:(error: number) =&gt; void): void</p>
128</td>
129<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>关闭下载任务fail监听,使用callback形式返回结果。</p>
130</td>
131</tr>
132<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>remove(): Promise&lt;boolean&gt;</p>
133</td>
134<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>移除下载任务,异步方法,使用promise形式返回结果。</p>
135</td>
136</tr>
137<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>remove(callback: AsyncCallback&lt;boolean&gt;): void</p>
138</td>
139<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>移除下载任务,异步方法,使用callback形式返回结果。</p>
140</td>
141</tr>
142<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>pause(): Promise&lt;boolean&gt;</p>
143</td>
144<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>暂停下载任务,异步方法,使用promise形式返回结果。</p>
145</td>
146</tr>
147<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>pause(callback: AsyncCallback&lt;boolean&gt;): void</p>
148</td>
149<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>暂停下载任务,异步方法,使用callback形式返回结果。</p>
150</td>
151</tr>
152<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>resume(): Promise&lt;boolean&gt;</p>
153</td>
154<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>恢复下载任务,异步方法,使用promise形式返回结果。</p>
155</td>
156</tr>
157<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>resume(callback: AsyncCallback&lt;boolean&gt;): void</p>
158</td>
159<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>恢复下载任务,异步方法,使用callback形式返回结果。</p>
160</td>
161</tr><tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>query(): Promise&lt;DownloadInfo&gt;</p>
162</td>
163<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>查询下载任务,异步方法,使用promise形式返回DownloadInfo。</p>
164</td>
165</tr>
166<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>query(callback: AsyncCallback&lt;DownloadInfo&gt;): void</p>
167</td>
168<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>查询下载任务,异步方法,使用callback形式返回DownloadInfo。</p>
169</td>
170</tr><tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>queryMimeType(): Promise&lt;string&gt;</p>
171</td>
172<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>查询下载任务的MIME type,异步方法,使用promise形式返回MIME type。</p>
173</td>
174</tr>
175<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>queryMimeType(callback: AsyncCallback&lt;string&gt;): void</p>
176</td>
177<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>查询下载任务的MIME type,异步方法,使用callback形式返回MIME type。</p>
178</td>
179</tr>
180</tbody>
181</table>
182
183**表 3**  参数 DownloadConfig的描述
184<table><thead align="left"><tr id="row143351854201012"><th class="cellrowborder" valign="top" width="20%" id="mcps1.2.3.1.1"><p id="p103351154121010"><a name="p103351154121010"></a><a name="p103351154121010"></a>名称</p>
185</th>
186<th class="cellrowborder" valign="top" width="10%" id="mcps1.2.3.1.2"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>类型</p>
187</th>
188<th class="cellrowborder" valign="top" width="70%" id="mcps1.2.3.1.3"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>说明</p>
189</th>
190</tr>
191</thead>
192<tbody><tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>url</p>
193</td>
194<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
195</td>
196<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>目标URL。</p>
197</td>
198</tr>
199<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>header</p>
200</td>
201<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>Object</p>
202</td>
203<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>请求头。</p>
204</td>
205</tr>
206<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>enableMetered</p>
207</td>
208<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>boolean</p>
209</td>
210<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>计费网络时允许下载。</p>
211</td>
212</tr>
213<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>enableRoaming</p>
214</td>
215<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>boolean</p>
216</td>
217<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>网络漫游时允许下载。</p>
218</td>
219</tr>
220<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>description</p>
221</td>
222<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
223</td>
224<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>下载任务描述。</p>
225</td>
226</tr>
227<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>networkType</p>
228</td>
229<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>number</p>
230</td>
231<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>指定网络允许下载。</p>
232</td>
233</tr>
234<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>filePath</p>
235</td>
236<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
237</td>
238<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>文件保存路径。</p>
239</td>
240</tr>
241<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>title</p>
242</td>
243<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
244</td>
245<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>下载任务标题。</p>
246</td>
247</tr>
248</tbody>
249</table>
250
251**表 4**  参数 DownloadInfo的描述
252<table><thead align="left"><tr id="row143351854201012"><th class="cellrowborder" valign="top" width="20%" id="mcps1.2.3.1.1"><p id="p103351154121010"><a name="p103351154121010"></a><a name="p103351154121010"></a>名称</p>
253</th>
254<th class="cellrowborder" valign="top" width="10%" id="mcps1.2.3.1.2"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>类型</p>
255</th>
256<th class="cellrowborder" valign="top" width="70%" id="mcps1.2.3.1.3"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>说明</p>
257</th>
258</tr>
259</thead>
260<tbody><tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>description</p>
261</td>
262<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
263</td>
264<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>下载任务描述。</p>
265</td>
266</tr>
267<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>downloadedBytes</p>
268</td>
269<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>number</p>
270</td>
271<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>已下载字节数。</p>
272</td>
273</tr>
274<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>downloadId</p>
275</td>
276<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>number</p>
277</td>
278<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>下载任务ID。</p>
279</td>
280</tr>
281<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>failedReason</p>
282</td>
283<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>number</p>
284</td>
285<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>下载任务失败的理由。</p>
286</td>
287</tr>
288<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>fileName</p>
289</td>
290<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
291</td>
292<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>保存文件名。</p>
293</td>
294</tr>
295<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>filePath</p>
296</td>
297<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
298</td>
299<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>文件保存路径。</p>
300</td>
301</tr>
302<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>pausedReason</p>
303</td>
304<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>number</p>
305</td>
306<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>下载暂停的理由。</p>
307</td>
308</tr>
309<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>status</p>
310</td>
311<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>number</p>
312</td>
313<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>下载任务状态。</p>
314</td>
315</tr>
316<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>targetURI</p>
317</td>
318<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
319</td>
320<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>下载任务URL。</p>
321</td>
322<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>downloadTitle</p>
323</td>
324<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
325</td>
326<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>下载任务标题。</p>
327</td>
328<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>downloadTotalBytes</p>
329</td>
330<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>number</p>
331</td>
332<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>文件总字节数。</p>
333</td>
334</tr>
335</tbody>
336</table>
337**表 5** UploadTask的主要接口
338
339<table><thead align="left"><tr id="row143351854201012"><th class="cellrowborder" valign="top" width="50%" id="mcps1.2.3.1.1"><p id="p103351154121010"><a name="p103351154121010"></a><a name="p103351154121010"></a>接口名</p>
340</th>
341<th class="cellrowborder" valign="top" width="50%" id="mcps1.2.3.1.2"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>描述</p>
342</th>
343</tr>
344</thead>
345<tbody><tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>on(type: 'progress', callback:AsyncCallback &lt;uploadedSize: number, totalSize: number> =&gt; void): void</p>
346</td>
347<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>开启上传任务监听,异步方法,使用callback形式返回上传进度结果。多次调用的场合最后一次调用时传入的callback有效。</p>
348</td>
349</tr>
350<tr id="row13335054111018"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p12832214151418"><a name="p12832214151418"></a><a name="p12832214151418"></a>on(type: 'headerReceive', callback: AsyncCallback&lt;object&gt; =&gt; void): void</p>
351</td>
352<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p3335145451011"><a name="p3335145451011"></a><a name="p3335145451011"></a>开启上传任务监听,异步方法,使用callback形式返回HTTP header response结果。多次调用的场合最后一次调用时传入的callback有效。</p>
353</td>
354</tr>
355<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>off(type: 'progress', callback:AsyncCallback&lt;uploadedSize: number, totalSize: number>=&gt; void): void</p>
356</td>
357<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>关闭上传任务进度监听,异步方法,使用callback形式返回结果。</p>
358</td>
359</tr>
360<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>off(type: 'headerReceive', callback:AsyncCallback&lt;object&gt; =&gt; void): void</p>
361</td>
362<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>关闭上传任务HTTP Header response监听,异步方法,使用callback形式返回结果。</p>
363</td>
364</tr>
365<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>remove(): Promise&lt;boolean&gt;</p>
366</td>
367<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>移除上传的任务,异步方法,使用promise形式返回结果。</p>
368</td>
369</tr>
370<tr id="row204321219393"><td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>remove(callback: AsyncCallback&lt;boolean&gt;): void</p>
371</td>
372<td class="cellrowborder" valign="top" width="50%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>移除上传的任务,异步方法,使用callback形式返回结果。</p>
373</td>
374</tr>
375</tbody>
376</table>
377
378**表 6**  参数 UploadConfig的描述
379<table><thead align="left"><tr id="row143351854201012"><th class="cellrowborder" valign="top" width="20%" id="mcps1.2.3.1.1"><p id="p103351154121010"><a name="p103351154121010"></a><a name="p103351154121010"></a>名称</p>
380</th>
381<th class="cellrowborder" valign="top" width="10%" id="mcps1.2.3.1.2"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>类型</p>
382</th>
383<th class="cellrowborder" valign="top" width="70%" id="mcps1.2.3.1.3"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>说明</p>
384</th>
385</tr>
386</thead>
387<tbody><tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>url</p>
388</td>
389<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
390</td>
391<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>目标URL。
392</p>
393</td>
394</tr>
395<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>header</p>
396</td>
397<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>Object</p>
398</td>
399<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>请求头。</p>
400</td>
401</tr>
402<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>method</p>
403</td>
404<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
405</td>
406<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>请求方式。</p>
407</td>
408</tr>
409<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>files</p>
410</td>
411<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>Array&lt;File></p>
412</td>
413<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>本地文件列表信息。</p>
414</td>
415</tr>
416<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>data</p>
417</td>
418<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>Array&lt;RequestData></p>
419</td>
420<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>上传请求表单列表信息。</p>
421</td>
422</tr>
423</tbody>
424</table>
425
426**表 7**  File 描述
427<table><thead align="left"><tr id="row143351854201012"><th class="cellrowborder" valign="top" width="20%" id="mcps1.2.3.1.1"><p id="p103351154121010"><a name="p103351154121010"></a><a name="p103351154121010"></a>名称</p>
428</th>
429<th class="cellrowborder" valign="top" width="10%" id="mcps1.2.3.1.2"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>类型</p>
430</th>
431<th class="cellrowborder" valign="top" width="70%" id="mcps1.2.3.1.3"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>说明</p>
432</th>
433</tr>
434</thead>
435<tbody><tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>filename</p>
436</td>
437<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
438</td>
439<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>提交多部分时,请求头中的文件名。</p>
440</td>
441</tr>
442<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>name</p>
443</td>
444<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
445</td>
446<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>提交多部分时,表单项目的名称,缺省为file。</p>
447</td>
448</tr>
449<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>uri</p>
450</td>
451<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
452</td>
453<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>文件的本地存储路径。
454支持“dataability”和“internal”两种协议类型,但“internal”仅支持临时目录,示例:
455dataability:///com.domainname.dataability.persondata/person/10/file.txt
456internal://cache/path/to/file.txt</p>
457</td>
458</tr>
459<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>type</p>
460</td>
461<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
462</td>
463<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>文件的内容类型,默认根据文件名或路径的后缀获取。</p>
464</td>
465</tr>
466</tbody>
467</table>
468
469**表 8**  RequestData 描述
470<table><thead align="left"><tr id="row143351854201012"><th class="cellrowborder" valign="top" width="20%" id="mcps1.2.3.1.1"><p id="p103351154121010"><a name="p103351154121010"></a><a name="p103351154121010"></a>名称</p>
471</th>
472<th class="cellrowborder" valign="top" width="10%" id="mcps1.2.3.1.2"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>类型</p>
473</th>
474<th class="cellrowborder" valign="top" width="70%" id="mcps1.2.3.1.3"><p id="p1033585416105"><a name="p1033585416105"></a><a name="p1033585416105"></a>说明</p>
475</th>
476</tr>
477</thead>
478<tbody><tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>name</p>
479</td>
480<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
481</td>
482<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>表单元素的名称。</p>
483</td>
484</tr>
485<tr id="row204321219393"><td class="cellrowborder" valign="top" width="20%" headers="mcps1.2.3.1.1 "><p id="p1893413268144"><a name="p1893413268144"></a><a name="p1893413268144"></a>value</p>
486</td>
487<td class="cellrowborder" valign="top" width="10%" headers="mcps1.2.3.1.2 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>string</p>
488</td>
489<td class="cellrowborder" valign="top" width="70%" headers="mcps1.2.3.1.3 "><p id="p18761104812149"><a name="p18761104812149"></a><a name="p18761104812149"></a>表单元素的值。</p>
490</td>
491</tr>
492</tbody>
493</table>
494
495###  使用说明
496
497```js
498// 导入模块
499import request from '@ohos.request';
500```
501```js
502// 下载服务接口使用说明
503let downloadConfig = {
504  url: 'http://mirror.bjtu.edu.cn/kernel/linux/libs/libc5/libc5.cvs.tar.gz',
505  header: {},
506  enableMetered: true,
507  enableRoaming: true,
508  description: 'download libc from mirror site',
509  networkType: 1,
510  filePath: '/data/libc5.cvs.tgz',
511  title: 'download libc',
512}
513let downloadTask;
514
515```
5161.获取DownloadTask实例
517
518```js
519// 使用callback形式回调返回DownloadTask实例。
520request.download(downloadConfig, (err, data) => {
521    if (err) {
522        console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
523        return;
524    }
525    console.info('Success to request the download.);
526    downloadTask = data;
527});
528
529// 使用promise形式回调返回DownloadTask实例。
530request.download(downloadConfig).then((data) => {
531    console.info('Success to request the download.);
532    downloadTask = data;
533}).catch((err) => {
534    console.error('Failed to request the download. Cause: ' + JSON.stringify(err));
535})
536```
5372.创建监听下载进度
538
539```js
540// 开启下载进度监听,使用callback形式返回下载进度结果。
541downloadTask.on('progress', (receivedSize, totalSize) => {
542    console.info("download receivedSize :" + receivedSize + " totalSize :" + totalSize);
543});
544```
5453.创建监听complete事件
546
547```
548// 开启下载任务complete监听,使用callback形式返回。
549downloadTask.on('complete', () => {
550    console.info("download task has been completed");
551});
552```
5534.创建监听pause事件
554
555```js
556// 开启下载任务pause监听,使用callback形式返回。
557downloadTask.on('pause', () => {
558    console.info("download task has been paused");
559});
560```
5615.创建监听remove事件
562
563```js
564// 开启下载任务remove监听,使用callback形式返回。
565downloadTask.on('remove', () => {
566    console.info("download task has been removed");
567});
568```
5696.创建监听fail事件
570
571```js
572// 开启下载任务fail监听,使用callback形式返回错误码。
573downloadTask.on('fail', (error) => {
574    console.info("download fail error:" + error);
575});
576```
5777.关闭监听下载进度
578
579```js
580// 关闭下载任务进度监听,使用callback形式返回下载进度结果。
581downloadTask.off('progress', (receivedSize, totalSize) => {
582    console.info("download receivedSize :" + receivedSize + " totalSize :" + totalSize);
583});
584```
5858.关闭监听complete事件
586
587```js
588// 关闭下载任务complete监听,使用callback形式返回。
589downloadTask.off('complete', () => {
590    console.info("delete complete notification");
591});
592```
5939.关闭监听pause事件
594
595```js
596// 关闭下载任务pause监听,使用callback形式返回。
597downloadTask.off('pause', () => {
598    console.info("delete pause notification");
599});
600```
60110.关闭监听pause事件
602
603```js
604// 关闭下载任务remove监听,使用callback形式返回。
605downloadTask.off('remove', () => {
606    console.info("delete remove notification");
607});
608```
60911.关闭监听fail事件
610
611```js
612// 关闭下载任务fail监听,使用callback形式返回错误码。
613downloadTask.off('fail', (error) => {
614    console.info("remove fail notification error:" + error);
615});
616```
61712.删除下载任务
618
619```js
620// 移除下载的任务,使用promise形式返回结果。
621downloadTask.remove().then((result) => {
622    if (result) {
623        console.info('Success to remove the download task.(promise) ');
624    } else {
625        console.error('Failed to remove the download task.(promise) ');
626    }
627}).catch((err) => {
628    console.error('Failed to remove the download task.(promise) Cause: ' + JSON.stringify(err));
629});
630
631// 移除下载的任务,使用callback形式返回结果。
632downloadTask.remove((err, result) => {
633    if (err) {
634        console.error('Failed to remove the download task.(callback) Cause: ' + JSON.stringify(err));
635        return;
636    }
637    if (result) {
638        console.info('Success to remove the download task.(callback) ');
639    } else {
640        console.error('Failed to remove the download task.(callback) ');
641    }
642});
643```
64413.暂停下载
645
646```js
647// 暂停下载的任务,使用promise形式返回结果。
648downloadTask.pause().then(() => {
649	console.info('Success to pause the download task.(promise) ');
650}).catch((err) => {
651    console.error('Failed to pause the download task.(promise) Cause: ' + JSON.stringify(err));
652});
653
654// 暂停下载的任务,使用callback形式返回结果。
655downloadTask.pause((err) => {
656    if (err) {
657        console.error('Failed to pause the download task.(callback) Cause: ' + JSON.stringify(err));
658		return;
659    }
660	console.info('Success to pause the download task.(callback) ');
661});
662```
66314.恢复下载
664
665```js
666// 恢复下载的任务,使用promise形式返回结果。
667downloadTask.resume().then(() => {
668	console.info('Success to resume the download task.(promise) ');
669}).catch((err) => {
670    console.error('Failed to resume the download task.(promise) Cause: ' + JSON.stringify(err));
671});
672
673// 恢复下载的任务,使用callback形式返回结果。
674downloadTask.resume((err) => {
675    if (err) {
676        console.error('Failed to resume the download task.(callback) Cause: ' + JSON.stringify(err));
677		return;
678    }
679	console.info('Success to resume the download task.(callback) ');
680});
681```
68215.查询下载
683
684```js
685// 查询下载的任务,使用promise形式返回结果。
686downloadTask.query().then((downloadInfo) => {
687	console.info('Success to query the download task.(promise) ');
688}).catch((err) => {
689    console.error('Failed to query the download task.(promise) Cause: ' + JSON.stringify(err));
690});
691
692// 查询下载的任务,使用callback形式返回结果。
693downloadTask.query((err, downloadInfo) => {
694    if (err) {
695        console.error('Failed to query the download task.(callback) Cause: ' + JSON.stringify(err));
696		return;
697    }
698	console.info('Success to query the download task.(callback) ');
699});
700```
70116.查询下载的mime type
702
703```js
704// 查询下载任务的mime type,使用promise形式返回结果。
705downloadTask.queryMimeType().then((mime) => {
706	console.info('Success to queryMimeType the download task.(promise) MimeType ' + JSON.stringify(mime));
707}).catch((err) => {
708    console.error('Failed to queryMimeType the download task.(promise) Cause: ' + JSON.stringify(err));
709});
710
711// 查询下载任务的mime type,使用callback形式返回结果。
712downloadTask.queryMimeType((err, mime) => {
713    if (err) {
714        console.error('Failed to queryMimeType the download task.(callback) Cause: ' + JSON.stringify(err));
715		return;
716    }
717	console.info('Success to queryMimeType the download task.(promise) MimeType ' + JSON.stringify(mime));
718});
719```
720```js
721// 上传服务接口使用说明
722```
7231.上传文件创建
724
725```js
726// 上传一组文件,以及添加移除progress、headerReceive、fail监听,移除上传任务。
727let url = 'http://192.168.2.211/files/';
728let file1 = { filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg" };
729let file2 = { filename: "test", name: "test", uri: "internal://cache/test.zip", type: "zip" };
730let file3 = { filename: "test", name: "test", uri: "internal://cache/test.mp4", type: "mp4" };
731let file4 = { filename: "test", name: "test", uri: "internal://cache/test.exe", type: "exe" };
732let file5 = { filename: "test", name: "test", uri: "internal://cache/test.pdf", type: "pdf" };
733let file6 = { filename: "test", name: "test", uri: "internal://cache/test.txt", type: "txt" };
734let largeFile = { filename: "test", name: "test", uri: "internal://cache/testLarge.txt", type: "txt" };
735let dataabilityFile = { filename: "test", name: "test",
736  uri: "dataability://com.test.testApp/person/test.txt", type: "txt" };
737let files = [file1, file2, file3, file4, file5, file6, largeFile, dataabilityFile];
738let data = [{ name: "name123", value: "123" }];
739let uploadTask;
740```
7412.获取上传的UploadTask实例
742
743```js
744// 使用callback形式回调返回UploadTask实例。
745request.upload({ url, header, "POST", files, data }, (err, data) => {
746    if (err) {
747        console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
748        return;
749    }
750    console.info('Success to request the upload.);
751    uploadTask = data;
752});
753
754// 使用promise形式回调返回UploadTask实例。
755request.upload({ url, header, "POST", files, data }).then((data) => {
756    console.info('Success to request the upload.);
757    uploadTask = data;
758}).catch((err) => {
759    console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));
760})
761```
7623.创建上传任务进度的监听
763
764```js
765// 开启上传任务监听,使用callback形式返回上传进度结果。
766uploadTask.on('progress', (uploadedSize, totalSize) => {
767    console.info("on progress upload uploadedSize :" + uploadedSize + " totalSize :" + totalSize);
768});
769```
7704.创建上传的HTTP header response监听事件
771
772```js
773// 开启上传任务监听,使用callback形式返回HTTP header response结果。
774uploadTask.on('headerReceive', (headers) => {
775    console.info("on headerReceive headers:" + JSON.stringify(headers));
776});
777```
7785.创建上传的错误码监听事件
779
780```js
781// 开启上传任务监听,使用callback形式返回错误码。
782uploadTask.on('fail', (error) => {
783    console.info("on fail error:" + error);
784});
785```
7866.关闭上传任务进度任务监听
787
788```js
789// 关闭上传任务监听,使用callback形式返回上传进度结果。
790uploadTask.off('progress', (uploadedSize, totalSize) => {
791    console.info("on progress upload uploadedSize :" + uploadedSize + " totalSize :" + totalSize);
792});
793```
7947.关闭上传的HTTP header response监听事件
795
796```js
797// 关闭上传任务监听,使用callback形式返回HTTP header response结果。
798uploadTask.off('headerReceive', (headers) => {
799    console.info("on headerReceive headers:" + JSON.stringify(headers));
800});
801```
8028.关闭上传的错误码监听事件
803
804```js
805// 关闭上传任务监听,使用callback形式返回错误码。
806uploadTask.off('fail', (error) => {
807    console.info("on fail error:" + error);
808});
809```
8109.删除上传的任务
811
812```js
813// 移除上传的任务,使用promise形式返回结果。
814uploadTask.remove().then((result) => {
815    if (result) {
816        console.info('Success to remove the upload task.(promise) ');
817    } else {
818        console.error('Failed to remove the upload task.(promise) ');
819    }
820}).catch((err) => {
821    console.error('Failed to remove the upload task.(promise) Cause: ' + JSON.stringify(err));
822});
823
824// 移除上传的任务,使用callback形式返回结果。
825uploadTask.remove((err, result) => {
826    if (err) {
827        console.error('Failed to remove the upload task.(callback) Cause: ' + JSON.stringify(err));
828        return;
829    }
830    if (result) {
831        console.info('Success to remove the upload task.(callback) ');
832    } else {
833        console.error('Failed to remove the upload task.(callback) ');
834    }
835});
836```
837
838##  相关仓
839
840[miscservices_request](https://gitee.com/openharmony/miscservices_request/tree/master/)