`
nianshi
  • 浏览: 416430 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

Flex中使用FileReference类下载文件

    博客分类:
  • Flex
阅读更多

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

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

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" verticalAlign="middle" backgroundColor="white" creationComplete="init();">
  
  <mx:Script>
    <![CDATA[
      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);
      }
    ]]>
  </mx:Script>
  
  <mx:Model id="fileRefModel">
    <file>
      <creationDate>{""}</creationDate>
      <creator>{""}</creator>
      <modificationDate>{""}</modificationDate>
      <name>{""}</name>
      <size>{""}</size>
      <type>{""}</type>
    </file>
  </mx:Model>
  
  <mx:Button id="downloadBtn" label="Download example source code" icon="{diskIcon}" click="downloadSourceCodeZip()" toolTip="{FILE_URL}" height="40" />

  <mx:DataGrid id="debug" dataProvider="{arrColl}" width="{downloadBtn.width}" rowCount="5" rowHeight="22" itemClick="showAlert(event.currentTarget.selectedItem)">
    <mx:columns>
      <mx:DataGridColumn dataField="data" headerText="#" width="20" />
      <mx:DataGridColumn dataField="type" headerText="Type" showDataTips="true" dataTipField="eventString" />
    </mx:columns>
  </mx:DataGrid>
  
  <mx:Text id="txt" condenseWhite="true" visible="false">
    <mx:text>
    creationDate: {fileRefModel.creationDate}
    creator: {fileRefModel.creator}
    modificationDate: {fileRefModel.modificationDate}
    name: {fileRefModel.name}
    size: {fileRefModel.size}
    type: {fileRefModel.type}
    </mx:text>
  </mx:Text>

</mx:Application>

分享到:
评论

相关推荐

    flex文件上传下载,在线以pdf形式浏览文件

    1. **文件上传**:在Flex应用中,可以使用FileReference类来处理文件上传操作。FileReference允许用户选择本地文件,并通过HTTP POST请求将其发送到服务器。文件上传过程中可以显示进度条,通过监听DataEvent.UPLOAD...

    Flex多文件上传+md5验证文件是否上传

    1. **多文件上传**:在Flex中,可以利用Flash Player的FileReference类来实现文件上传。用户可以选择一个或多个文件,然后FileReference对象将负责读取文件内容并发送到服务器。通过循环遍历FileReference列表,可以...

    源码:Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载

    Flex与.NET互操作(五):使用FileReference+HttpHandler实现文件上传/下载 一文的源码的完整工程文件,包含FLEX客户端和 ASP.NET服务端源码! 在VS2010和FLash builder4 中运行!

    flex文件上传下载

    - **FileReference对象**:在Flex中,`FileReference`类是处理文件上传的核心。通过创建`FileReference`对象,用户可以选择本地文件并发起上传请求。 - **选择文件**:使用`browse()`方法弹出文件选择对话框,允许...

    flex在web端上传和下载文件前后台代码

    在Flex中,我们可以使用`FileReference`类来处理文件选择和上传操作。`FileReference.browse()`方法用于打开文件选择对话框,`FileReference.upload()`方法用于将选中的文件上传到服务器。 2. **文件类型筛选**:...

    Flex上传文件与下载

    虽然提供的代码片段中并未明确展示文件下载的具体实现细节,但可以推测其实现方式大致如下: - 用户点击“下载”按钮时,应用程序应调用服务器端的下载接口。 - 服务器端返回文件流至客户端。 - 客户端接收文件流并...

    flex 文件上传下载完整代码(废弃--代码有错误)

    文件下载在Flex中的实现与上传类似,但使用了不同的方法。主要步骤如下: 1. **创建FileReference对象**:在接收到下载请求时,创建一个FileReference对象,用于保存下载的文件。 2. **开始下载**:调用...

    Flex 向 java服务器 上传文件

    在Flex中,通过FileReference类选择和上传文件;在Java端,使用Spring MVC的MultipartFile接口接收并处理上传的文件。这个过程涉及到前端与后端的交互,对理解网络通信和文件处理机制有很好的实践意义。

    Flex与.NET互操作 使用FileReference+HttpHandler实现文件上传/下载

    本文将详细介绍如何利用Flex中的`FileReference`类结合ASP.NET中的`HttpHandler`来实现文件的上传和下载功能。我们将从Flex客户端的角度出发,探讨如何设置监听事件、处理文件选择及上传过程,并在最后实现与服务器...

    Flex附件上传下载

    NET互操作 使用FileReference+HttpHandler实现文件上传-下载_Flex_脚本之家.htm`可能包含一个完整的示例代码,演示了如何在Flex中使用`FileReference`类与.NET的HttpHandler协同工作,实现文件的上传和下载。...

    flex 文件上传下载完整代码(修正版)

    在项目开发过程中,经常会遇到文件上传下载的...但在flex中由于安全沙箱的原因flex程序不能直接访问本地文件,但是flex SDK中提供了FileReference和FileReferenceList两个类,可以通过这两个类来实现文件的上传下载。

    flex 利用FileReference上传firefox报2038错误

    - **Cookie行为差异**:值得注意的是,在非IE浏览器中使用`FileReference`上传文件时,默认情况下不会携带正确的Cookie信息。这意味着即使在Firefox或Chrome中使用,也会携带IE的Cookie信息。为了解决这个问题,可以...

    Flex文件的上传下载.pdf

    在早期版本的Flex中(如Flex 1.5),实现文件的上传与下载相对较为复杂,需要借助Flash Player API中的`FileReference`类。而到了Flex 2及后续版本,这一过程得到了简化,`FileReference`类被整合进了Flex类库中,...

    flex 文件上传 预览下载 及中文名乱码解决问题

    在Flex中,我们可以使用`URLLoader`类来发送数据,`FileReference`类则用于选择和上传本地文件。用户通过点击按钮触发`browse()`方法选择文件,然后调用`upload()`方法将选中的文件上传到服务器。注意,为了防止中文...

    flex+java文件上传完整实例

    1. **FileReference类**:Flex中的FileReference类是与文件操作相关的基础,它允许用户选择一个或多个文件,并提供了读取、保存和上传文件的功能。 2. **事件监听**:在用户选择文件后,我们需要监听DataEvent....

    Flex+WebService附件上传下载

    在Flex中,附件的上传通常使用`FileReference`类。`FileReference`是ActionScript 3.0中的一个核心类,允许用户选择本地文件,并执行读取、写入和上传操作。在文件上传过程中,我们首先需要在用户界面上添加一个按钮...

    flex_java文件上传(一)

    在Flex中,我们可以使用FileReference类来处理文件选择和上传操作。FileReference提供了chooseFile()方法让用户选择本地文件,以及upload()方法将选中的文件上传到服务器。在实际应用中,我们需要监听FileReference...

    Flex文件上传的组件

    2. **FileReference类**:这是ActionScript 3.0中处理文件上传的核心类。通过实例化FileReference对象,我们可以调用它的browse()方法打开文件选择对话框,select()方法选择文件,upload()方法将文件上传到服务器。 ...

    flex3 java 文件上传源码

    在文件上传中,你需要使用FileReference类来处理文件选择和上传操作。 2. **FileReference对象**:在Flex中,FileReference对象允许用户选择本地文件,并提供了读取文件内容、显示对话框选择文件以及上传文件到...

Global site tag (gtag.js) - Google Analytics