加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

flex上传多个文件

发布时间:2020-12-15 04:28:20 所属栏目:百科 来源:网络整理
导读:我这里的需求是上传前可以删除不需要的,开始上传后不可以更改。 运行后的样子: uploadgrid.mxm 上传jar的类, Html代码 ? xml version = "1.0" encoding = "utf-8" ? s:Application xmlns:fx = "http://ns.adobe.com/mxml/2009" xmlns:s = "library://ns.a

我这里的需求是上传前可以删除不需要的,开始上传后不可以更改。

运行后的样子:

uploadgrid.mxm 上传jar的类,

Html代码

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3. xmlns:s="library://ns.adobe.com/flex/spark"
  4. creationComplete="group_creationCompleteHandler(event)"
  5. xmlns:mx="library://ns.adobe.com/flex/mx"
  6. width="500" height="250">
  7. <s:layout>
  8. <s:BasicLayout/>
  9. </s:layout>
  10. <fx:Declarations>
  11. <mx:NumberFormatter id="filesizeFormatter" useThousandsSeparator="true"/>
  12. </fx:Declarations>
  13. <fx:Script>
  14. <![CDATA[
  15. import mx.collections.ArrayCollection;
  16. import mx.controls.Alert;
  17. import mx.events.CloseEvent;
  18. import mx.events.CollectionEvent;
  19. import mx.events.FlexEvent;
  20. import mx.formatters.CurrencyFormatter;
  21. import mx.formatters.NumberFormatter;
  22. [Bindable]
  23. public var deleteenabled:Boolean=true;
  24. //文件列表
  25. [Bindable]
  26. private var fileRefs: FileReferenceList = new FileReferenceList();
  27. //这个地址是我测试用的服务器地址
  28. [Bindable]
  29. private var urlrequest: URLRequest = new URLRequest("http://localhost:8080/auto/FileUploaded");
  30. //文件列表中的文件
  31. [Bindable]
  32. public var selectedFiles: ArrayCollection = new ArrayCollection([]);
  33. //上传的文件
  34. private var singleThreadFiles: Array = [];
  35. //逐个上传文件
  36. private function singleThreadUploadFile(): void
  37. {
  38. //FIFO:逐个从列表中取出,进行上传
  39. if (singleThreadFiles.length > 0)
  40. {
  41. var mf: MyFile = singleThreadFiles.pop() as MyFile ;
  42. var f:FileReference=mf.fr;
  43. f.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,doSingleUploadFileComplete);
  44. f.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
  45. f.upload(urlrequest);
  46. }
  47. else
  48. {
  49. uploadbutton.enabled=false;
  50. uploadtext.text="全部上传成功!";
  51. showuploadjar();
  52. }
  53. }
  54. private function doSingleUploadFileComplete(event: Event): void
  55. {
  56. var uploadInfo:String=event.data;
  57. var uploadInfoArray:Array = uploadInfo.split("#");
  58. if(uploadInfoArray[0]=="true")
  59. {
  60. var f: FileReference = event.target as FileReference;
  61. f.removeEventListener(Event.COMPLETE,doSingleUploadFileComplete);
  62. singleThreadUploadFile();
  63. }else
  64. {
  65. Alert.show(uploadInfoArray[1]+"请检查网络或程序是否正常,目录是否正确并创建,请删除上传不成功的jar,重新选择后上传!");
  66. selectFileButton.enabled=true;
  67. cleanAll.enabled=true;
  68. deleteenabled=true;
  69. }
  70. }
  71. //初始化
  72. private function init(): void
  73. {
  74. Security.allowDomain("*");
  75. fileRefs.addEventListener(Event.SELECT,fileSelectHandler);
  76. fileRefs.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
  77. addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler);
  78. }
  79. //要上传的文件类型,我这里是jar文件
  80. private function selectFile(): void
  81. {
  82. var jarfile:FileFilter = new FileFilter("jar文件(*.jar)","*.jar*");
  83. var allfile:FileFilter = new FileFilter("所有文件(*.*)","*.*");
  84. var allTypes:Array = new Array();
  85. allTypes.push(jarfile);
  86. allTypes.push(allfile);
  87. fileRefs.browse(allTypes);
  88. }
  89. //用户选择的文件,如果需要判断是否可以多次选择同名的文件可以在这里判断
  90. private function fileSelectHandler(event: Event): void
  91. {
  92. for each (var f: FileReference in fileRefs.fileList)
  93. {
  94. var mf:MyFile = new MyFile(f);
  95. selectedFiles.addItem(mf);
  96. }
  97. }
  98. //出错后的处理
  99. private function ioErrorHandler(e:IOErrorEvent): void
  100. {
  101. Alert.show(e.text);
  102. Alert.show("请检查网络或程序是否正常,请删除上传不成功的jar,重新选择后上传!");
  103. selectFileButton.enabled=true;
  104. cleanAll.enabled=true;
  105. deleteenabled=true;
  106. }
  107. //删除列表中的文件
  108. public function removeFile(mf: MyFile): void
  109. {
  110. var index: int = selectedFiles.getItemIndex(mf);
  111. if (index != -1)
  112. selectedFiles.removeItemAt(index);
  113. }
  114. //初始化组件或应用程序
  115. protected function group_creationCompleteHandler(event:FlexEvent):void
  116. {
  117. init();
  118. }
  119. //确认上传的文件
  120. protected function button1_clickHandler(event:MouseEvent):void
  121. {
  122. Alert.show("开始上传后不能更改选择的jar包 ,确定上传?",
  123. "确认上传",
  124. Alert.YES|Alert.NO,
  125. null,
  126. startUpload);
  127. }
  128. //根据业务的需求上传后不能更改,可以根据自己的业务逻辑去改相应的处理
  129. private function startUpload(e: CloseEvent): void{
  130. if (e.detail == Alert.YES){
  131. selectFileButton.enabled=false;
  132. cleanAll.enabled=false;
  133. deleteenabled=false;
  134. singleThreadFiles = selectedFiles.toArray().concat();
  135. for(var i:int=0;i<singleThreadFiles.length;i++)
  136. {
  137. if(singleThreadFiles[i] is MyFile)
  138. {
  139. var mf:MyFile= singleThreadFiles[i] as MyFile;
  140. var f:FileReference=mf.fr;
  141. trace(f.name);
  142. }
  143. }
  144. singleThreadFiles.reverse();
  145. singleThreadUploadFile();
  146. }
  147. }
  148. //输出上传后的jar的信息,如果需要更多的信息可以在MyFlie类里找到
  149. private function showuploadjar():void
  150. {
  151. for(var i:int=0; i<selectedFiles.length;i++)
  152. {
  153. var mf:MyFile=selectedFiles.getItemAt(i) as MyFile;
  154. // Alert.show(mf.uploadFilePath+mf.uploadFileName);
  155. trace("上传后的路径:"+mf.uploadFilePath+mf.uploadFileName);
  156. mf.removeDateEvent();
  157. }
  158. }
  159. ]]>
  160. </fx:Script>
  161. <s:VGroup paddingTop="10">
  162. <mx:VBox>
  163. <mx:HBox width="100%">
  164. <mx:Button id="selectFileButton" label="浏览" click="selectFile()"/>
  165. <mx:Box width="100%" horizontalAlign="right">
  166. <mx:Button id="cleanAll" click="selectedFiles.removeAll();" label="清空"/>
  167. </mx:Box>
  168. </mx:HBox>
  169. <mx:DataGrid id="files" dataProvider="{selectedFiles}" >
  170. <mx:columns>
  171. <mx:DataGridColumn width="200" headerText="文件名" dataField="fr.name" />
  172. <mx:DataGridColumn width="100" headerText="大小(字节)" dataField="fr.size">
  173. <mx:itemRenderer>
  174. <fx:Component>
  175. <mx:Label text="{outerDocument.filesizeFormatter.format(data.size)}" textAlign="right"/>
  176. </fx:Component>
  177. </mx:itemRenderer>
  178. </mx:DataGridColumn>
  179. <mx:DataGridColumn width="100" headerText="状态" dataField="uploadlable" />
  180. <mx:DataGridColumn headerText="删除" width="80">
  181. <mx:itemRenderer>
  182. <fx:Component>
  183. <mx:HBox fontSize="10" fontWeight="normal" fontThickness="1">
  184. <fx:Script>
  185. <![CDATA[
  186. protected function linkbutton1_clickHandler(event:MouseEvent):void
  187. {
  188. var mf:MyFile = data as MyFile;
  189. outerDocument.removeFile(mf);
  190. }
  191. ]]>
  192. </fx:Script>
  193. <mx:LinkButton label="Delete" click="linkbutton1_clickHandler(event)" enabled="{outerDocument.deleteenabled}">
  194. </mx:LinkButton>
  195. </mx:HBox>
  196. </fx:Component>
  197. </mx:itemRenderer>
  198. </mx:DataGridColumn>
  199. </mx:columns>
  200. </mx:DataGrid>
  201. <mx:HBox>
  202. <mx:Button label="上传" id="uploadbutton" click="button1_clickHandler(event)" />
  203. <s:Label paddingTop="7" id="uploadtext" text="" />
  204. </mx:HBox>
  205. </mx:VBox>
  206. </s:VGroup>
  207. </s:Application>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读