downloader.html 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="viewport" content="initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=no">
  6. <meta name="HandheldFriendly" content="true">
  7. <meta name="MobileOptimized" content="320">
  8. <title>Downloader Document</title>
  9. <link rel="stylesheet" type="text/css" href="res/doc.css" charset="utf-8">
  10. <link rel="stylesheet" type="text/css" href="res/prettify.sons.css" charset="utf-8">
  11. <script type="text/javascript" src="res/doc.js" charset="utf-8"></script><script type="text/javascript" src="res/prettify.js" charset="utf-8"></script>
  12. </head>
  13. <body><div id="content" class="content">
  14. <h1><a name="plus.downloader">downloader</a></h1>
  15. <p>Downloader模块管理网络文件下载任务,用于从服务器下载各种文件,并支持跨域访问操作。通过plus.downloader获取下载管理对象。Downloader下载使用HTTP的GET/POST方式请求下载文件,符合标准HTTP/HTTPS传输协议。</p>
  16. <h2>方法:</h2>
  17. <ul>
  18. <li>
  19. <a href="#plus.downloader.createDownload">createDownload</a>: 新建下载任务</li>
  20. <li>
  21. <a href="#plus.downloader.enumerate">enumerate</a>: 枚举下载任务</li>
  22. <li>
  23. <a href="#plus.downloader.clear">clear</a>: 清除下载任务</li>
  24. <li>
  25. <a href="#plus.downloader.startAll">startAll</a>: 开始所有下载任务</li>
  26. </ul>
  27. <h2>对象:</h2>
  28. <ul>
  29. <li>
  30. <a href="#plus.downloader.Download">Download</a>: Download对象管理一个下载任务</li>
  31. <li>
  32. <a href="#plus.downloader.DownloadEvent">DownloadEvent</a>: 下载任务事件类型</li>
  33. <li>
  34. <a href="#plus.downloader.DownloadState">DownloadState</a>: 下载任务状态</li>
  35. <li>
  36. <a href="#plus.downloader.DownloadOptions">DownloadOptions</a>: 下载任务参数</li>
  37. </ul>
  38. <h2>回调方法:</h2>
  39. <ul>
  40. <li>
  41. <a href="#plus.downloader.DownloadCompletedCallback">DownloadCompletedCallback</a>: 下载任务完成时的回调</li>
  42. <li>
  43. <a href="#plus.downloader.DownloadStateChangedCallback">DownloadStateChangedCallback</a>: 下载任务状态变化回调</li>
  44. <li>
  45. <a href="#plus.downloader.DownloadEnumerateCallback">DownloadEnumerateCallback</a>: 枚举下载任务回调</li>
  46. </ul>
  47. <h2>权限:</h2>
  48. <p>5+功能模块(permissions)</p>
  49. <pre class="prettyprint linenums">
  50. {
  51. // ...
  52. "permissions":{
  53. // ...
  54. "Downloader": {
  55. "description": "文件下载,管理文件下载任务"
  56. }
  57. }
  58. }
  59. </pre>
  60. <h1><a name="plus.downloader.Download">Download</a></h1>
  61. <p>Download对象管理一个下载任务</p>
  62. <pre class="prettyprint linenums">
  63. interface plus.downloader.Download {
  64. readonly attribute String id;
  65. readonly attribute String url;
  66. readonly attribute Number state;
  67. readonly attribute DownloadOptions options;
  68. readonly attribute String filename;
  69. readonly attribute Number downloadedSize;
  70. readonly attribute Number totalSize;
  71. function void abort();
  72. function void addEventListener(String event, function Callback listener, Boolean capture);
  73. function String getAllResponseHeaders();
  74. function String getResponseHeader(String headerName);
  75. function void pause();
  76. function void resume();
  77. function void setRequestHeader(String headerName, String headerValue);
  78. function void start();
  79. }
  80. </pre>
  81. <h2>属性:</h2>
  82. <ul>
  83. <li>
  84. <a href="#plus.downloader.Download.id">id</a>: 下载任务的标识</li>
  85. <li>
  86. <a href="#plus.downloader.Download.url">url</a>: 下载文件的地址</li>
  87. <li>
  88. <a href="#plus.downloader.Download.state">state</a>: 任务的状态</li>
  89. <li>
  90. <a href="#plus.downloader.Download.options">options</a>: 下载任务的参数</li>
  91. <li>
  92. <a href="#plus.downloader.Download.filename">filename</a>: 下载的文件名称</li>
  93. <li>
  94. <a href="#plus.downloader.Download.downloadedSize">downloadedSize</a>: 已完成下载文件的大小</li>
  95. <li>
  96. <a href="#plus.downloader.Download.totalSize">totalSize</a>: 下载任务文件的总大小</li>
  97. </ul>
  98. <h2>方法:</h2>
  99. <ul>
  100. <li>
  101. <a href="#plus.downloader.Download.abort">abort</a>: 取消下载任务</li>
  102. <li>
  103. <a href="#plus.downloader.Download.addEventListener">addEventListener</a>: 添加下载任务事件监听器</li>
  104. <li>
  105. <a href="#plus.downloader.Download.getAllResponseHeaders">getAllResponseHeaders</a>: 获取下载请求HTTP响应头部信息</li>
  106. <li>
  107. <a href="#plus.downloader.Download.getResponseHeader">getResponseHeader</a>: 获取下载请求指定的HTTP响应头部的值</li>
  108. <li>
  109. <a href="#plus.downloader.Download.pause">pause</a>: 暂停下载任务</li>
  110. <li>
  111. <a href="#plus.downloader.Download.resume">resume</a>: 恢复暂停的下载任务</li>
  112. <li>
  113. <a href="#plus.downloader.Download.setRequestHeader">setRequestHeader</a>: 设置下载请求的HTTP头数据</li>
  114. <li>
  115. <a href="#plus.downloader.Download.start">start</a>: 开始下载任务</li>
  116. </ul>
  117. <h1><a name="plus.downloader.DownloadEvent">DownloadEvent</a></h1>
  118. <p>下载任务事件类型</p>
  119. <h2>常量:</h2>
  120. <ul><li>"statechanged": <em>(<font class="type">String</font>
  121. 类型
  122. )</em>下载任务状态变化事件<br><p>
  123. 当下载任务状态发生变化时触发此事件,事件原型参考DownloadStateChangedCallback。
  124. </p>
  125. </li></ul>
  126. <h1><a name="plus.downloader.DownloadState">DownloadState</a></h1>
  127. <p>下载任务状态</p>
  128. <h2>常量:</h2>
  129. <ul>
  130. <li>undefined: <em>(<font class="type">undefined</font>
  131. 类型
  132. )</em>下载任务未开始<br><p>
  133. 通过plus.downloader.createDownload()方法创建下载任务后的初始状态,此时可调用其start()方法开始下载。
  134. </p>
  135. </li>
  136. <li>0: <em>(<font class="type">Number</font>
  137. 类型
  138. )</em>下载任务开始调度<br><p>
  139. 调用下载任务的start()方法之后处于此状态,此时下载任务处于可调度下载状态。
  140. </p>
  141. </li>
  142. <li>1: <em>(<font class="type">Number</font>
  143. 类型
  144. )</em>下载任务开始请求<br><p>
  145. 下载任务建立网络连接,发送请求到服务器并等待服务器的响应。
  146. </p>
  147. </li>
  148. <li>2: <em>(<font class="type">Number</font>
  149. 类型
  150. )</em>下载任务请求已经接收<br><p>
  151. 下载任务网络连接已建立,服务器返回响应,准备传输数据内容。
  152. </p>
  153. </li>
  154. <li>3: <em>(<font class="type">Number</font>
  155. 类型
  156. )</em>下载任务接收数据<br><p>
  157. 下载任务接收数据,监听statechanged事件时可多次触发此状态。
  158. </p>
  159. </li>
  160. <li>4: <em>(<font class="type">Number</font>
  161. 类型
  162. )</em>下载任务已完成<br><p>
  163. 下载任务完成数据传输并断开连接,下载成功或失败都会设置为此状态。
  164. </p>
  165. </li>
  166. <li>5: <em>(<font class="type">Number</font>
  167. 类型
  168. )</em>下载任务已暂停<br><p>
  169. 调用下载任务的pause()方法将任务暂停,此时可调用其resume()方法重新开始下载。
  170. </p>
  171. </li>
  172. <li>-1: <em>(<font class="type">Number</font>
  173. 类型
  174. )</em>枚举任务状态<br><p>
  175. 非下载任务状态,泛指所有下载任务的状态,用于enumerate()和clear()操作时指定作用于所有下载任务。
  176. </p>
  177. </li>
  178. </ul>
  179. <h1><a name="plus.downloader.DownloadOptions">DownloadOptions</a></h1>
  180. <p>下载任务参数</p>
  181. <pre class="prettyprint linenums">
  182. interface plus.downloader.DownloadOptions {
  183. readonly attribute String method;
  184. readonly attribute String data;
  185. readonly attribute String filename;
  186. readonly attribute Number priority;
  187. readonly attribute Number timeout;
  188. readonly attribute Number retry;
  189. readonly attribute Number retryInterval;
  190. }
  191. </pre>
  192. <h2>说明:</h2>
  193. <p class="des">
  194. 在创建下载任务时设置的参数,如设置下载任务使用的HTTP协议类型、优先级等。
  195. </p>
  196. <h2>属性:</h2>
  197. <ul>
  198. <li>method: <em>(<font class="type">String</font>
  199. 类型
  200. )</em>网络请求类型<br><p>
  201. 支持http协议的“GET”、“POST”,默认为“GET”请求。
  202. </p>
  203. </li>
  204. <li>data: <em>(<font class="type">String</font>
  205. 类型
  206. )</em>POST请求时提交的数据<br><p>
  207. 仅在网络请求类型method设置为"POST"时有效,"GET"请求时忽略此数据。
  208. </p>
  209. </li>
  210. <li>filename: <em>(<font class="type">String</font>
  211. 类型
  212. )</em>下载文件保存的路径<br><p>
  213. 保存文件路径仅支持以"_downloads/"、"_doc/"、"_documents/"开头的字符串。
  214. 文件路径以文件后缀名结尾(如"_doc/download/a.doc")表明指定保存文件目录及名称,以“/”结尾则认为指定保存文件的目录(此时程序自动生成文件名)。
  215. 如果指定的文件已经存在,则自动在文件名后面加"(i)",其中i为数字,如果文件名称后面已经是此格式,则数字i递增,如"download(1).doc"。
  216. 默认保存目录为("_downloads"),并自动生成文件名称。
  217. </p>
  218. </li>
  219. <li>priority: <em>(<font class="type">Number</font>
  220. 类型
  221. )</em>下载任务的优先级<br><p>
  222. 数值类型,数值越大优先级越高,默认优先级值为0。
  223. </p>
  224. </li>
  225. <li>timeout: <em>(<font class="type">Number</font>
  226. 类型
  227. )</em>下载任务超时时间<br><p>
  228. 数值类型,单位为s(秒),默认值为120s。
  229. 超时时间为服务器响应请求的时间(不是下载任务完成的总时间),如果设置为0则表示永远不超时。
  230. </p>
  231. </li>
  232. <li>retry: <em>(<font class="type">Number</font>
  233. 类型
  234. )</em>下载任务重试次数<br><p>
  235. 数值类型,默认为重试3次。
  236. </p>
  237. </li>
  238. <li>retryInterval: <em>(<font class="type">Number</font>
  239. 类型
  240. )</em>下载任务重试间隔时间<br><p>
  241. 数值类型,单位为s(秒),默认值为30s。
  242. </p>
  243. </li>
  244. </ul>
  245. <h1><a name="plus.downloader.DownloadCompletedCallback">DownloadCompletedCallback</a></h1>
  246. <p>下载任务完成时的回调</p>
  247. <pre class="prettyprint linenums">
  248. vaoid onCompleted(Download download, Number status) {
  249. // Download file complete code
  250. }
  251. </pre>
  252. <h2>说明:</h2>
  253. <p class="des">
  254. 下载任务完成时的回调函数,在下载任务完成时调用。
  255. 下载任务失败也将触发此回调。
  256. </p>
  257. <h2>参数:</h2>
  258. <ul>
  259. <li>download :
  260. <em>(
  261. <a href="#plus.downloader.Download">Download</a>
  262. )
  263. 必选 </em>下载任务对象<br>
  264. </li>
  265. <li>status:
  266. <em>(
  267. <font class="type">Number</font>
  268. )
  269. 必选 </em>下载结果状态码<br>
  270. HTTP传输协议状态码,如果未获取传输状态则其值则为0,如下载成功其值通常为200。
  271. </li>
  272. </ul>
  273. <h2>返回值:</h2>
  274. <font class="type">void</font>
  275. : 无<h1><a name="plus.downloader.DownloadStateChangedCallback">DownloadStateChangedCallback</a></h1>
  276. <p>下载任务状态变化回调</p>
  277. <pre class="prettyprint linenums">
  278. void onStateChanged( Download download, status ) {
  279. // Download state changed code.
  280. }
  281. </pre>
  282. <h2>参数:</h2>
  283. <ul>
  284. <li>download :
  285. <em>(
  286. <a href="#plus.downloader.Download">Download</a>
  287. )
  288. 必选 </em>下载任务对象<br>
  289. </li>
  290. <li>status:
  291. <em>(
  292. <font class="type">Number</font>
  293. )
  294. 必选 </em>下载结果状态码<br>
  295. HTTP传输协议状态码,如果未获取传输状态则其值则为0,如下载成功其值通常为200。
  296. </li>
  297. </ul>
  298. <h2>返回值:</h2>
  299. <font class="type">void</font>
  300. : 无<h1><a name="plus.downloader.DownloadEnumerateCallback">DownloadEnumerateCallback</a></h1>
  301. <p>枚举下载任务回调</p>
  302. <pre class="prettyprint linenums">
  303. void onEnumerated( Download[] downloads ) {
  304. // Enumerate success code
  305. }
  306. </pre>
  307. <h2>参数:</h2>
  308. <ul><li>downloads:
  309. <em>(
  310. <font class="type">Array</font>[
  311. <font class="type">Download</font>
  312. ]
  313. )
  314. 必选 </em>枚举到的下载任务对象数组<br>
  315. </li></ul>
  316. <h2>返回值:</h2>
  317. <font class="type">void</font>
  318. : 无<br><br>
  319. </div></body>
  320. </html>