1 2 3# 杂散子系统/Request服务 4 5## 简介 6 7### 内容介绍 8 9Request服务向三方应用提供系统下载/上传服务能力,以支撑应用开发者方便、高效地使用以及管理下载/上传业务的功能,包含新建、移除、暂停、恢复以及查询下载/上传任务。 10 11### 架构图介绍 12 13**图 1** 下载子系统架构图 14 15 16系统应用:依赖的系统应用如浏览器等。 17 18三方应用:依赖的第三方应用如淘宝等。 19 20Download API:提供下载功能的接口。 21 22IDL:提供NAPI之间的相互通信。 23 24下载服务:负责下载的具体过程,客户端发起一个下载请求,下载内部创建下载任务,处理下载请求并完成下载任务。 25 26DataAbility能力:用来保存每一次下载的记录。 27 28**图 2** 上传子系统架构图 29 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<DownloadTask>): 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<DownloadTask></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<UploadTask>): 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<UploadTask></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) => 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:() => 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) => 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) => 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?:() => 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) => 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<boolean></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<boolean>): 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<boolean></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<boolean>): 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<boolean></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<boolean>): 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<DownloadInfo></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<DownloadInfo>): 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<string></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<string>): 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 <uploadedSize: number, totalSize: number> => 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<object> => 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<uploadedSize: number, totalSize: number>=> 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<object> => 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<boolean></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<boolean>): 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<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<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/)