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的类,
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" creationComplete="group_creationCompleteHandler(event)" xmlns:mx="library://ns.adobe.com/flex/mx" width="500" height="250"> <s:layout> <s:BasicLayout/> </s:layout> <fx:Declarations> <mx:NumberFormatter id="filesizeFormatter" useThousandsSeparator="true"/> </fx:Declarations> <fx:Script> <![CDATA[ import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.events.CloseEvent; import mx.events.CollectionEvent; import mx.events.FlexEvent; import mx.formatters.CurrencyFormatter; import mx.formatters.NumberFormatter; [Bindable] public var deleteenabled:Boolean=true; //文件列表 [Bindable] private var fileRefs: FileReferenceList = new FileReferenceList(); //这个地址是我测试用的服务器地址 [Bindable] private var urlrequest: URLRequest = new URLRequest("http://localhost:8080/auto/FileUploaded"); //文件列表中的文件 [Bindable] public var selectedFiles: ArrayCollection = new ArrayCollection([]); //上传的文件 private var singleThreadFiles: Array = []; //逐个上传文件 private function singleThreadUploadFile(): void { //FIFO:逐个从列表中取出,进行上传 if (singleThreadFiles.length > 0) { var mf: MyFile = singleThreadFiles.pop() as MyFile ; var f:FileReference=mf.fr; f.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,doSingleUploadFileComplete); f.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); f.upload(urlrequest); } else { uploadbutton.enabled=false; uploadtext.text="全部上传成功!"; showuploadjar(); } } private function doSingleUploadFileComplete(event: Event): void { var uploadInfo:String=event.data; var uploadInfoArray:Array = uploadInfo.split("#"); if(uploadInfoArray[0]=="true") { var f: FileReference = event.target as FileReference; f.removeEventListener(Event.COMPLETE,doSingleUploadFileComplete); singleThreadUploadFile(); }else { Alert.show(uploadInfoArray[1]+"请检查网络或程序是否正常,目录是否正确并创建,请删除上传不成功的jar,重新选择后上传!"); selectFileButton.enabled=true; cleanAll.enabled=true; deleteenabled=true; } } //初始化 private function init(): void { Security.allowDomain("*"); fileRefs.addEventListener(Event.SELECT,fileSelectHandler); fileRefs.addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); addEventListener(IOErrorEvent.IO_ERROR,ioErrorHandler); } //要上传的文件类型,我这里是jar文件 private function selectFile(): void { var jarfile:FileFilter = new FileFilter("jar文件(*.jar)","*.jar*"); var allfile:FileFilter = new FileFilter("所有文件(*.*)","*.*"); var allTypes:Array = new Array(); allTypes.push(jarfile); allTypes.push(allfile); fileRefs.browse(allTypes); } //用户选择的文件,如果需要判断是否可以多次选择同名的文件可以在这里判断 private function fileSelectHandler(event: Event): void { for each (var f: FileReference in fileRefs.fileList) { var mf:MyFile = new MyFile(f); selectedFiles.addItem(mf); } } //出错后的处理 private function ioErrorHandler(e:IOErrorEvent): void { Alert.show(e.text); Alert.show("请检查网络或程序是否正常,请删除上传不成功的jar,重新选择后上传!"); selectFileButton.enabled=true; cleanAll.enabled=true; deleteenabled=true; } //删除列表中的文件 public function removeFile(mf: MyFile): void { var index: int = selectedFiles.getItemIndex(mf); if (index != -1) selectedFiles.removeItemAt(index); } //初始化组件或应用程序 protected function group_creationCompleteHandler(event:FlexEvent):void { init(); } //确认上传的文件 protected function button1_clickHandler(event:MouseEvent):void { Alert.show("开始上传后不能更改选择的jar包 ,确定上传?","确认上传",Alert.YES|Alert.NO,null,startUpload); } //根据业务的需求上传后不能更改,可以根据自己的业务逻辑去改相应的处理 private function startUpload(e: CloseEvent): void{ if (e.detail == Alert.YES){ selectFileButton.enabled=false; cleanAll.enabled=false; deleteenabled=false; singleThreadFiles = selectedFiles.toArray().concat(); for(var i:int=0;i<singleThreadFiles.length;i++) { if(singleThreadFiles[i] is MyFile) { var mf:MyFile= singleThreadFiles[i] as MyFile; var f:FileReference=mf.fr; trace(f.name); } } singleThreadFiles.reverse(); singleThreadUploadFile(); } } //输出上传后的jar的信息,如果需要更多的信息可以在MyFlie类里找到 private function showuploadjar():void { for(var i:int=0; i<selectedFiles.length;i++) { var mf:MyFile=selectedFiles.getItemAt(i) as MyFile; // Alert.show(mf.uploadFilePath+mf.uploadFileName); trace("上传后的路径:"+mf.uploadFilePath+mf.uploadFileName); mf.removeDateEvent(); } } ]]> </fx:Script> <s:VGroup paddingTop="10"> <mx:VBox> <mx:HBox width="100%"> <mx:Button id="selectFileButton" label="浏览" click="selectFile()"/> <mx:Box width="100%" horizontalAlign="right"> <mx:Button id="cleanAll" click="selectedFiles.removeAll();" label="清空"/> </mx:Box> </mx:HBox> <mx:DataGrid id="files" dataProvider="{selectedFiles}" > <mx:columns> <mx:DataGridColumn width="200" headerText="文件名" dataField="fr.name" /> <mx:DataGridColumn width="100" headerText="大小(字节)" dataField="fr.size"> <mx:itemRenderer> <fx:Component> <mx:Label text="{outerDocument.filesizeFormatter.format(data.size)}" textAlign="right"/> </fx:Component> </mx:itemRenderer> </mx:DataGridColumn> <mx:DataGridColumn width="100" headerText="状态" dataField="uploadlable" /> <mx:DataGridColumn headerText="删除" width="80"> <mx:itemRenderer> <fx:Component> <mx:HBox fontSize="10" fontWeight="normal" fontThickness="1"> <fx:Script> <![CDATA[ protected function linkbutton1_clickHandler(event:MouseEvent):void { var mf:MyFile = data as MyFile; outerDocument.removeFile(mf); } ]]> </fx:Script> <mx:LinkButton label="Delete" click="linkbutton1_clickHandler(event)" enabled="{outerDocument.deleteenabled}"> </mx:LinkButton> </mx:HBox> </fx:Component> </mx:itemRenderer> </mx:DataGridColumn> </mx:columns> </mx:DataGrid> <mx:HBox> <mx:Button label="上传" id="uploadbutton" click="button1_clickHandler(event)" /> <s:Label paddingTop="7" id="uploadtext" text="" /> </mx:HBox> </mx:VBox> </s:VGroup> </s:Application> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |