Flex 文件上传导入组件

  上文讲到Flex利用Blazeds来上传文件,本文则封装了一个组件用于文件的上传导入,其主要功能有:
  1)文件的选择;
  2)文件类型的限定,比如只能选择txt文件,图片文件等;
  3)文件上传,利用Blazeds;
  4)文件导入,利用Blazeds;
  5)上传、导入的事件分发;
  1、文件上传组件核心代码 flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="300" height="28" creationComplete="init()"> RemoteObject id="ro" destination="fileUpDownloadService" result="ro_resultHandler(event)" fault="ro_faultHandler(event)"/> --> [Event(name="result", type="event.FileImportEvent")] [Event(name="fault", type=" event.FileImportEvent")] RemoteObject(); ro.channelSet = FXConfig.getAMFChannel(); ro.destination = "fileUpDownloadService";//fileUpDownloadService ro.addEventListener(ResultEvent.RESULT,ro_resultHa ndler); ro.addEventListener(FaultEvent.FAULT,ro_faultHandl er); } private function completeHandler(event:Event):void { //trace("completeHandler: " + event); } private function selectHandler(event:Event):void { this.txtFileInfo.text = file.name; this.txtFileInfo.toolTip = "文件大小: "+file.size/1000+ "K";
  file.load(); //加载文件
  }
  /**
  * 设置文件过滤,打开文件选择框时刻选择哪些类型的文件
  * FileFilter("Images (*.jpg, *.jpeg, *.gif, *.png)", "*.jpg;*.jpeg;*.gif;*.png")
  */
  public function set fileFilter(fileType:String):void{
  if(!StringUtil.isEmpty(fileType) && StringUtil.trim(fileType).length>3){
  _fileFilter = [];
  _fileFilter.push(new FileFilter("("+fileType+")",fileType));
  }
  }
  // Property: maxFileSize,Flash Player Limit 100 mb
  private var _maxFileSize:Number = 1024*1024*20;
  [Bindable]
  /**
  * 读取和设置文件最大尺寸,单位为Byte,1K = 1024Byte,默认值为20M
  */
  public function get maxFileSize():Number
  {
  return _maxFileSize;
  }
  public function set maxFileSize(size:Number):void
  {
  _maxFileSize = size;
  }
  private function checkFile():Boolean{
  var blnResult:Boolean = true;
  if(StringUtil.isEmpty(txtFileInfo.text)){
  Alert.show("请选择要上传的文件!");
  return false;
  }
  if(file.size>_maxFileSize){ //文件大小验证失败
  Alert.show(StringUtil.format("该文件尺寸{0} 超出最大尺寸 {1}.",file.size/1000,_maxFileSize/1000));
  blnResult = false;
  }
  if(file.data==null){
  Alert.show("文件正在加载中,请稍等!");
  blnResult = false;
  }
  return blnResult;
  }
  protected function btnBrowse_clickHandler(event:MouseEvent):void
  {
  file.browse(_fileFilter);//打开文件选择框
  }
  protected function btnDelete_clickHandler(event:MouseEvent):void
  {
  //删除远程服务器的文件
  //清空txtFileInfo
  txtFileInfo.text = "";
  txtFileInfo.toolTip = "";
  } protected function ro_resultHandler(event:ResultEvent):void { this.dispatchEvent(new FileImportEvent(FileImportEvent.RESULT,event.resul t)); } protected function ro_faultHandler(event:FaultEvent):void { this.dispatchEvent(new FileImportEvent(FileImportEvent.FAULT,null,event.f ault)); } public function importFile(headers:Array):Boolean{ var isSuccess:Boolean = checkFile(); if(isSuccess){ ro.importFile(file.data,headers,file.type); } return isSuccess; } public function uploadFile():Boolean{ var isSuccess:Boolean = checkFile(); if(isSuccess){ ro.uploadFile(file.data,file.type); } return isSuccess; } ]]>
  
   2、FileImportEvent事件 package event { import flash.events.Event; import mx.rpc.Fault; publicclass FileImportEvent extends Event { publicstaticconst RESULT:String = "result"; publicstaticconst FAULT:String = "fault"; // privatevar _result:Object; privatevar _fault:Fault; // publicfunction FileImportEvent(type:String, result:Object=null, fault:Fault=null) { super(type,true); this._result = result; this._fault = fault; } // publicfunctionget result():Object{ return _result; } publicfunctionset result(value:Object):void{ _result = value; } // publicfunctionget fault():Fault{ return _fault; } publicfunctionset fault(value:Fault):void{ _fault = value; } } } 3、示例 flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="800" minHeight="600" creationComplete="init()" width="370" height="180" xmlns:fileupload="whh.flex.controls.fileupload.*">
  
  
  
  
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值