Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30479383
  • 博文数量: 708
  • 博客积分: 12163
  • 博客等级: 上将
  • 技术积分: 8240
  • 用 户 组: 普通用户
  • 注册时间: 2007-12-04 20:59
文章分类

全部博文(708)

分类: 系统运维

2008-08-13 16:51:38

Flex中的 FileReference 类的基本用法,允许用户从服务器上下载一个文件。这个例子也演示了你可以在 DataGrid组件中显示数据提示(data tips) ,只要把 data grid column 的 showDataTips 属性设置为 true ,然后把 column 的 dataTipField 设置一个值就行了。

当用户点击按钮的时候会下载一个 zip 文件 ,然后你可以把鼠标移到 DataGrid 组件的 Type 列上,来看额外的 Event 信息。


代码:


 
  
          import mx.controls.Alert;
      import mx.collections.ArrayCollection;
      import flash.net.FileReference;

      [Bindable]
      [Embed('assets/disk.png')]
      private var diskIcon:Class;
      
      [Bindable]
      private var arrColl:ArrayCollection;

      // 要下载文件的URL
      private const FILE_URL:String = "http://www.nshen.net/blog/doc/flex/FileReference_download_test/FileReference_download_test.zip";

      private var fileRef:FileReference;
      private var urlReq:URLRequest;
      
      private function init():void {
        // 初始化一个空ArrayCollection
        arrColl = new ArrayCollection();
        
        // 以FILE_URL指定的地址建立一个URLRequest
        urlReq = new URLRequest(FILE_URL);
        
        // 定义一个FileReference对象,并填加一系列事件监听
        fileRef = new FileReference();
        fileRef.addEventListener(Event.CANCEL, doEvent);
        fileRef.addEventListener(Event.COMPLETE, doEvent);
        fileRef.addEventListener(Event.OPEN, doEvent);
        fileRef.addEventListener(Event.SELECT, doEvent);
        fileRef.addEventListener(HTTPStatusEvent.HTTP_STATUS, doEvent);
        fileRef.addEventListener(IOErrorEvent.IO_ERROR, doEvent);
        fileRef.addEventListener(ProgressEvent.PROGRESS, doEvent);
        fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doEvent);
      }
      
      private function doEvent(evt:Event):void {
        // 取得当前FileReference的引用
        var fr:FileReference = evt.currentTarget as FileReference;
        
        // 填加事件顺序和类型到DataGrid组件
        arrColl.addItem({data:arrColl.length+1, type:evt.type, eventString:evt.toString()});

        try {
          // 更新 Model.
          fileRefModel.creationDate = fr.creationDate;
          fileRefModel.creator = fr.creator;
          fileRefModel.modificationDate = fr.modificationDate;
          fileRefModel.name = fr.name;
          fileRefModel.size = fr.size;
          fileRefModel.type = fr.type;
          // 显示文本
          txt.visible = true;
        } catch (err:*) {
          // uh oh, an error of sorts.
        }
      }

      private function downloadSourceCodeZip():void {
        // 清空现有的 array collection.
        arrColl = new ArrayCollection();
        // 隐藏文本组件
        txt.visible = false;
        // 开始下载
        fileRef.download(urlReq);
      }
      
      private function showAlert(item:Object):void {
        Alert.show(item.eventString, item.type);
      }
    ]]>
  

  
  
    
      {""}
      {""}
      {""}
      {""}
      {""}
      {""}
    

  

  
  

  
    
      
      
    

  

  
  
    
    creationDate: {fileRefModel.creationDate}
    creator: {fileRefModel.creator}
    modificationDate: {fileRefModel.modificationDate}
    name: {fileRefModel.name}
    size: {fileRefModel.size}
    type: {fileRefModel.type}
    

  




完整代码下载
阅读(2966) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~