uploader.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332
  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>Uploader 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.uploader">uploader</a></h1>
  15. <p>Uploader模块管理网络上传任务,用于从本地上传各种文件到服务器,并支持跨域访问操作。通过plus.uploader可获取上传管理对象。Uploader上传使用HTTP的POST方式提交数据,数据格式符合Multipart/form-data规范,即rfc1867(Form-based File Upload in HTML)协议。</p>
  16. <h2>方法:</h2>
  17. <ul>
  18. <li>
  19. <a href="#plus.uploader.createUpload">createUpload</a>: 新建上传任务</li>
  20. <li>
  21. <a href="#plus.uploader.clear">clear</a>: 清除上传任务</li>
  22. <li>
  23. <a href="#plus.uploader.enumerate">enumerate</a>: 枚举上传任务</li>
  24. <li>
  25. <a href="#plus.uploader.startAll">startAll</a>: 开始所有上传任务</li>
  26. </ul>
  27. <h2>对象:</h2>
  28. <ul>
  29. <li>
  30. <a href="#plus.uploader.Upload">Upload</a>: Upload对象管理一个上传任务</li>
  31. <li>
  32. <a href="#plus.uploader.UploadEvent">UploadEvent</a>: 上传任务事件类型</li>
  33. <li>
  34. <a href="#plus.uploader.UploadState">UploadState</a>: 上传任务的状态,Number类型</li>
  35. <li>
  36. <a href="#plus.uploader.UploadOptions">UploadOptions</a>: JSON对象,创建上传任务的参数</li>
  37. <li>
  38. <a href="#plus.uploader.UploadFileOptions">UploadFileOptions</a>: JSON对象,添加上传文件的参数</li>
  39. </ul>
  40. <h2>回调方法:</h2>
  41. <ul>
  42. <li>
  43. <a href="#plus.uploader.UploadCompletedCallback">UploadCompletedCallback</a>: 上传任务完成时的回调函数</li>
  44. <li>
  45. <a href="#plus.uploader.UploadStateChangedCallback">UploadStateChangedCallback</a>: 上传任务状态变化回调函数,在上传任务状态发生变化时调用</li>
  46. <li>
  47. <a href="#plus.uploader.UploadEnumerateCallback">UploadEnumerateCallback</a>: 枚举上传任务回调函数,在枚举上传任务完成时时调用</li>
  48. </ul>
  49. <h2>权限:</h2>
  50. <p>5+功能模块(permissions)</p>
  51. <pre class="prettyprint linenums">
  52. {
  53. // ...
  54. "permissions":{
  55. // ...
  56. "Uploader": {
  57. "description": "文件上传,管理文件上传任务"
  58. }
  59. }
  60. } </pre>
  61. <h1><a name="plus.uploader.Upload">Upload</a></h1>
  62. <p>Upload对象管理一个上传任务</p>
  63. <pre class="prettyprint linenums">
  64. interface Upload {
  65. readonly attribute String url;
  66. readonly attribute Number state;
  67. readonly attribute UploadOptions options;
  68. readonly attribute String responseText;
  69. readonly attribute Number uploadedSize;
  70. readonly attribute Number totalSize;
  71. function void abort();
  72. function Boolean addData( String key, String value );
  73. function void addEventListener( String event, function Callback listener, Boolean capture );
  74. function Boolean addFile( String path, UploadFileOptions options );
  75. function String getAllResponseHeaders();
  76. function String getResponseHeader( headerName );
  77. function void pause();
  78. function void resume();
  79. function void setRequestHeader( String headerName, String headerValue );
  80. function void start();
  81. }
  82. </pre>
  83. <h2>属性:</h2>
  84. <ul>
  85. <li>
  86. <a href="#plus.uploader.Upload.id">id</a>: 上传任务的标识</li>
  87. <li>
  88. <a href="#plus.uploader.Upload.url">url</a>: 上传文件的服务器地址</li>
  89. <li>
  90. <a href="#plus.uploader.Upload.state">state</a>: 任务的状态</li>
  91. <li>
  92. <a href="#plus.uploader.Upload.options">options</a>: 上传任务的参数</li>
  93. <li>
  94. <a href="#plus.uploader.Upload.responseText">responseText</a>: 上传任务完成后服务器返回的数据</li>
  95. <li>
  96. <a href="#plus.uploader.Upload.uploadedSize">uploadedSize</a>: 已完成上传数据的大小)</li>
  97. <li>
  98. <a href="#plus.uploader.Upload.totalSize">totalSize</a>: 上传数据的总大小</li>
  99. </ul>
  100. <h2>方法:</h2>
  101. <ul>
  102. <li>
  103. <a href="#plus.uploader.Upload.addFile">addFile</a>: 添加上传文件</li>
  104. <li>
  105. <a href="#plus.uploader.Upload.addData">addData</a>: 添加上传数据</li>
  106. <li>
  107. <a href="#plus.uploader.Upload.start">start</a>: 开始上传任务</li>
  108. <li>
  109. <a href="#plus.uploader.Upload.pause">pause</a>: 暂停上传任务</li>
  110. <li>
  111. <a href="#plus.uploader.Upload.resume">resume</a>: 恢复暂停的上传任务</li>
  112. <li>
  113. <a href="#plus.uploader.Upload.abort">abort</a>: 取消上传任务</li>
  114. <li>
  115. <a href="#plus.uploader.Upload.addEventListener">addEventListener</a>: 添加上传任务事件监听器</li>
  116. <li>
  117. <a href="#plus.uploader.Upload.getAllResponseHeaders">getAllResponseHeaders</a>: 获取上传请求HTTP响应头部信息</li>
  118. <li>
  119. <a href="#plus.uploader.Upload.getResponseHeader">getResponseHeader</a>: 获取上传请求指定的HTTP响应头部的值</li>
  120. <li>
  121. <a href="#plus.uploader.Upload.setRequestHeader">setRequestHeader</a>: 设置上传请求的HTTP头数据</li>
  122. </ul>
  123. <h1><a name="plus.uploader.UploadEvent">UploadEvent</a></h1>
  124. <p>上传任务事件类型</p>
  125. <h2>常量:</h2>
  126. <ul><li>"statechanged": <em>(<font class="type">String</font>
  127. 类型
  128. )</em>上传任务状态变化事件<br><p>
  129. 当上传任务状态发生变化时触发此事件,事件原型参考UploadStateChangedCallback。
  130. </p>
  131. </li></ul>
  132. <h1><a name="plus.uploader.UploadState">UploadState</a></h1>
  133. <p>上传任务的状态,Number类型</p>
  134. <h2>常量:</h2>
  135. <ul>
  136. <li>undefined: <em>(<font class="type">undefined</font>
  137. 类型
  138. )</em>上传任务未开始<br><p>
  139. 通过plus.uploader.createUpload()方法创建上传任务后的初始状态,此时可调用其start()方法开始上传。
  140. </p>
  141. </li>
  142. <li>0: <em>(<font class="type">number</font>
  143. 类型
  144. )</em>上传任务开始调度<br><p>
  145. 调用上传任务的start()方法之后处于此状态,此时上传任务处于可调度上传状态。
  146. </p>
  147. </li>
  148. <li>1: <em>(<font class="type">number</font>
  149. 类型
  150. )</em>上传任务开始请求<br><p>
  151. 上传任务建立网络连接,发送请求到服务器并等待服务器的响应。
  152. </p>
  153. </li>
  154. <li>2: <em>(<font class="type">number</font>
  155. 类型
  156. )</em>上传任务请求已经建立<br><p>
  157. 上传任务网络连接已建立,服务器返回响应,准备传输数据内容。
  158. </p>
  159. </li>
  160. <li>3: <em>(<font class="type">number</font>
  161. 类型
  162. )</em>上传任务提交数据<br><p>
  163. 上传任务提交数据,监听statechanged事件时可多次触发此状态。
  164. </p>
  165. </li>
  166. <li>4: <em>(<font class="type">number</font>
  167. 类型
  168. )</em>上传任务已完成<br><p>
  169. 上传任务完成数据提交并断开连接,上传成功或失败都会设置为此状态。
  170. </p>
  171. </li>
  172. <li>5: <em>(<font class="type">number</font>
  173. 类型
  174. )</em>上传任务已暂停<br><p>
  175. 调用上传任务的pause()方法将任务暂停,此时可调用其resume()方法重新开始上传。
  176. </p>
  177. </li>
  178. <li>-1: <em>(<font class="type">number</font>
  179. 类型
  180. )</em>枚举任务状态<br><p>
  181. 非上传任务状态,泛指所有上传任务的状态,用于enumerate()和clear()操作时指定作用于所有上传任务。
  182. </p>
  183. </li>
  184. </ul>
  185. <h1><a name="plus.uploader.UploadOptions">UploadOptions</a></h1>
  186. <p>JSON对象,创建上传任务的参数</p>
  187. <h2>属性:</h2>
  188. <ul>
  189. <li>blocksize: <em>(<font class="type">Number</font>
  190. 类型
  191. )</em>上传任务每次上传的文件块大小(仅在支持断点续传的服务有效)<br><p>
  192. 数值类型,单位为Byte(字节),默认值为102400,若设置值小于等于0则表示不分块上传。
  193. </p>
  194. </li>
  195. <li>chunkSize: <em>(<font class="type">Number</font>
  196. 类型
  197. )</em>分块上传的大小<br><p>
  198. 单位为Kb,设置值小于等于0则不分块上传,默认为不分块上传。
  199. Android平台需设置分块上传才能准确触发statechanged返回上传进度,如果不设置分块上传则在开始后快速返回上传完成进度,而实际并没有上传完。
  200. 注意:分块上传需要服务器支持,如果服务器不支持则会删除失败。
  201. </p>
  202. </li>
  203. <li>method: <em>(<font class="type">String</font>
  204. 类型
  205. )</em>网络请求类型<br><p>
  206. 仅支持http协议的“POST”请求。
  207. </p>
  208. </li>
  209. <li>priority: <em>(<font class="type">Number</font>
  210. 类型
  211. )</em>上传任务的优先级<br><p>
  212. 数值类型,数值越大优先级越高,默认优先级值为0。
  213. </p>
  214. </li>
  215. <li>retry: <em>(<font class="type">Number</font>
  216. 类型
  217. )</em>上传任务重试次数<br><p>
  218. 数值类型,默认为重试3次。
  219. </p>
  220. </li>
  221. <li>retryInterval: <em>(<font class="type">Number</font>
  222. 类型
  223. )</em>上传任务重试间隔时间<br><p>
  224. 数值类型,单位为s(秒),默认值为30s。
  225. </p>
  226. </li>
  227. <li>timeout: <em>(<font class="type">Number</font>
  228. 类型
  229. )</em>上传任务超时时间<br><p>
  230. 数值类型,单位为s(秒),默认值为120s。
  231. 超时时间为服务器响应请求的时间(不是上传任务完成的总时间),如果设置为0则表示永远不超时。
  232. </p>
  233. </li>
  234. </ul>
  235. <h1><a name="plus.uploader.UploadFileOptions">UploadFileOptions</a></h1>
  236. <p>JSON对象,添加上传文件的参数</p>
  237. <h2>属性:</h2>
  238. <ul>
  239. <li>key: <em>(<font class="type">String</font>
  240. 类型
  241. )</em>文件键名<br><p>
  242. 上传文件在上传任务中的键名,默认值为为文件名称。
  243. 上传任务中如果已经存在相同key的上传文件或数据将导致添加文件失败。
  244. </p>
  245. </li>
  246. <li>name: <em>(<font class="type">String</font>
  247. 类型
  248. )</em>文件名称<br><p>
  249. 上传文件的名称,默认值为上传文件路径中的名称。
  250. </p>
  251. </li>
  252. <li>mime: <em>(<font class="type">String</font>
  253. 类型
  254. )</em>文件类型<br><p>
  255. 上传文件的类型(如图片文件为“image/jpeg”),默认值自动根据文件后缀名称生成。
  256. </p>
  257. </li>
  258. </ul>
  259. <h1><a name="plus.uploader.UploadCompletedCallback">UploadCompletedCallback</a></h1>
  260. <p>上传任务完成时的回调函数</p>
  261. <pre class="prettyprint linenums">
  262. void uploadCompleted( Upload upload, Number status ) {
  263. // File upload completed code.
  264. }
  265. </pre>
  266. <h2>说明:</h2>
  267. <p class="des">在上传任务完成时调用,上传任务失败也将触发此回调。</p>
  268. <h2>参数:</h2>
  269. <ul>
  270. <li>upload:
  271. <em>(
  272. <a href="#plus.uploader.Upload">Upload</a>
  273. )
  274. 必选 </em>上传任务对象<br>
  275. </li>
  276. <li>status:
  277. <em>(
  278. <font class="type">Number</font>
  279. )
  280. 必选 </em>上传结果状态码<br>
  281. HTTP传输协议状态码,如果未获取传输状态则其值则为0,如上传成功其值通常为200。
  282. </li>
  283. </ul>
  284. <h2>返回值:</h2>
  285. <font class="type">void</font>
  286. : 无<h1><a name="plus.uploader.UploadStateChangedCallback">UploadStateChangedCallback</a></h1>
  287. <p>上传任务状态变化回调函数,在上传任务状态发生变化时调用</p>
  288. <pre class="prettyprint linenums">
  289. void onStateChanged( Upload upload, status ) {
  290. // Upload state changed code.
  291. }
  292. </pre>
  293. <h2>参数:</h2>
  294. <ul>
  295. <li>upload:
  296. <em>(
  297. <a href="#plus.uploader.Upload">Upload</a>
  298. )
  299. 必选 </em>上传任务对象<br>
  300. </li>
  301. <li>status:
  302. <em>(
  303. <font class="type">Number</font>
  304. )
  305. 必选 </em>上传结果状态码<br>
  306. HTTP传输协议状态码,如果未获取传输状态则其值则为0,如上传成功其值通常为200。
  307. </li>
  308. </ul>
  309. <h2>返回值:</h2>
  310. <font class="type">void</font>
  311. : 无<h1><a name="plus.uploader.UploadEnumerateCallback">UploadEnumerateCallback</a></h1>
  312. <p>枚举上传任务回调函数,在枚举上传任务完成时时调用</p>
  313. <pre class="prettyprint linenums">
  314. void onEnumerated( Upload[] uploads ) {
  315. // Upload enumerate completed code.
  316. }
  317. </pre>
  318. <h2>参数:</h2>
  319. <ul><li>uploads:
  320. <em>(
  321. <font class="type">Array</font>[
  322. <a href="#plus.uploader.Upload">Upload</a>
  323. ]
  324. )
  325. 必选 </em>枚举到的上传任务对象数组<br>
  326. </li></ul>
  327. <h2>返回值:</h2>
  328. <font class="type">void</font>
  329. : 无<br><br>
  330. </div></body>
  331. </html>