FLEX自定义事件,及上传

as3端

  
  
  
  
  1. package com.czw.apps.base 
  2.     import flash.events.*; 
  3.     import flash.net.*; 
  4.     import flash.utils.*; 
  5.     [Event(name="ioError", type="flash.events.IOErrorEvent")] 
  6.     [Event(name="complete", type="flash.events.Event")] 
  7.      
  8.     public class FileUpload extends EventDispatcher 
  9.     { 
  10.         private var file:FileReference; 
  11.          
  12.         private var _fileType:String="All"
  13.          
  14.         [Bindable] 
  15.         [Inspectable(category="General", defaultValue="")] 
  16.         private var _file_name:String; 
  17.          
  18.         [Bindable] 
  19.         [Inspectable(category="General", defaultValue="")] 
  20.         private var _process_event:ProgressEvent; 
  21.          
  22.         [Bindable] 
  23.         [Inspectable(category="General", defaultValue="Image", enumeration="Image,Word,Excel,Pdf,All")] 
  24.         public function get fileType():String 
  25.         { 
  26.             return _fileType; 
  27.         } 
  28.         public function set fileType(value:String):void 
  29.         { 
  30.             this._fileType=value; 
  31.         } 
  32.          
  33.         public function get actualFileType():String 
  34.         { 
  35.             return file.type.substring(1,file.type.length); 
  36.         } 
  37.          
  38.         public function FileUpload() 
  39.         { 
  40.             file = new FileReference(); 
  41.             configureListeners(file); 
  42.         } 
  43.          
  44.         public function get data():ByteArray{ 
  45.             if(file!=null
  46.             { 
  47.                 return file.data; 
  48.             } 
  49.             return null
  50.         } 
  51.          
  52.         public function get fileName():String 
  53.         { 
  54.             return _file_name; 
  55.         } 
  56.          
  57.         public function get processEvent():ProgressEvent 
  58.         { 
  59.             return _process_event; 
  60.         } 
  61.          
  62.         public function browse():void 
  63.         { 
  64.             file.browse(types); 
  65.         } 
  66.          
  67.         private function configureListeners(dispatcher:IEventDispatcher):void { 
  68.             dispatcher.addEventListener(Event.CANCEL, eventHandler); 
  69.             dispatcher.addEventListener(Event.COMPLETE, eventHandler); 
  70.             dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, eventHandler); 
  71.             dispatcher.addEventListener(IOErrorEvent.IO_ERROR, eventHandler); 
  72.             dispatcher.addEventListener(Event.OPEN, eventHandler); 
  73.             dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); 
  74.             dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, eventHandler); 
  75.             dispatcher.addEventListener(Event.SELECT, selectHandler); 
  76.             dispatcher.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler); 
  77.         } 
  78.          
  79.         private function eventHandler(event:Event):void { 
  80.             this.dispatchEvent(event); 
  81.         } 
  82.          
  83.         private function uploadCompleteDataHandler(event:DataEvent):void { 
  84.             trace("uploadCompleteData: " + event.data); 
  85.             _file_name=event.data as String; 
  86.         } 
  87.          
  88.         private function progressHandler(event:ProgressEvent):void { 
  89.             this._process_event=event; 
  90.         } 
  91.          
  92.         private function selectHandler(event:Event):void { 
  93.             _file_name = FileReference(event.target).name; 
  94.             trace("selectHandler: name=" + _file_name); 
  95.             file.load(); 
  96.         } 
  97.          
  98.         private function getImageTypeFilter():FileFilter 
  99.         { 
  100.             return new FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)""*.jpg;*.jpeg;*.gif;*.png"); 
  101.         } 
  102.          
  103.         private function getWordTypeFilter():FileFilter 
  104.         { 
  105.             return new FileFilter("Word Files (*.doc, *.docx)""*.doc;*.docx"); 
  106.         } 
  107.          
  108.         private function getExcelTypeFilter():FileFilter 
  109.         { 
  110.             return new FileFilter("Excel Files (*.xls, *.xlsx)""*.xls;*.xlsx"); 
  111.         } 
  112.          
  113.         private function getPdfTypeFilter():FileFilter 
  114.         { 
  115.             return new FileFilter("Pdf Files (*.pdf)","*.pdf"); 
  116.         } 
  117.          
  118.         private function get types():Array { 
  119.             switch(_fileType) 
  120.             { 
  121.                 case "Image"
  122.                     return new Array(getImageTypeFilter()); 
  123.                 case "Word"
  124.                     return new Array(getWordTypeFilter()); 
  125.                 case "Excel"
  126.                     return new Array(getExcelTypeFilter()); 
  127.                 case "Pdf"
  128.                     return new Array(getPdfTypeFilter()); 
  129.                 default
  130.                     return [getPdfTypeFilter(),getImageTypeFilter(),getWordTypeFilter(),getExcelTypeFilter()]; 
  131.             } 
  132.             return null
  133.         } 
  134.     } 

flex端

 

  
  
  
  
  1. <fx:Declarations> 
  2. <base:FileUpload id="uploadFile" complete="browsComplete()"/> 
  3. </fx:Declarations> 
  4. <fx:Script> 
  5. private function uploadBrows(attachmentType:int):void 
  6.             { 
  7.                 if(loading) 
  8.                 { 
  9.                     if(alert==null
  10.                     { 
  11.                         alert=new Alert; 
  12.                         alert.title="文件上传提示"
  13.                         alert.text="文件上传中,请稍后"
  14.                     } 
  15.                     PopUpManager.addPopUp(alert, parent, true); 
  16.                     PopUpManager.centerPopUp(alert); 
  17.                     return
  18.                 } 
  19.                 loading=true
  20.                 this.attachmentType=attachmentType; 
  21.                 if(attachmentType==8){ 
  22.                     uploadFile.fileType="Image"
  23.                 }else
  24.                     uploadFile.fileType="All"
  25.                 } 
  26.                 uploadFile.browse(); 
  27.             } 
  28. //上传文件成功回调函数
    private function browsComplete():void
    {}
  29. </fx:Script> 
  30. <s:Button left="108" bottom="2" width="45" label="上传" click="uploadBrows(8);" 
  31.                           enabled="{updateFlag||addFlag}"/> 
  32.  

 

本文出自 “技术积累” 博客,谢绝转载!

你可能感兴趣的:(职场,import,休闲)