Downloading files in Flex using the FileReference class

简介:

OK, enough embedding examples, lets take a look at downloading files using Flash Player’s FileReference class (flash.net.FileReference). This example demonstrates a basic usage of the FileReference class within Flex, allowing users to download a file from the server. This example also shows how you can use data tips in the DataGrid control by setting the data grid column’s showDataTips property to true and specifying a value for the dataTipField column.

Full code after the jump.

 

The following example downloads a ZIP file when the user presses the Button control. You can mouse over the items in the DataGrid control’s “Type” column to see additional event information

<? xml version="1.0" encoding="utf-8" ?>
<!--  http://blog.flexexamples.com/2007/07/28/downloading-files-in-flex-using-the-filereference-class/  -->
< 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 of the file to download. */
            private const FILE_URL:String = "http://blog.flexexamples.com/wp-content/uploads/FileReference_download_test/bin/srcview/FileReference_download_test.zip";   

            private var fileRef:FileReference;
            private var urlReq:URLRequest;   

            private function init():void {
                /* Initialize the array collection to an empty collection. */
                arrColl = new ArrayCollection();   

                /* Set up the URL request to download the file specified by the FILE_URL variable. */
                urlReq = new URLRequest(FILE_URL);   

                /* Define file reference object and add a bunch of event listeners. */
                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 {
                /* Create shortcut to the FileReference object. */
                var fr:FileReference = evt.currentTarget as FileReference;   

                /* Add event order and type to the DataGrid control. */
                arrColl.addItem({data:arrColl.length+1, type:evt.type, eventString:evt.toString()});   

                try {
                    /* Update the 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;
                    /* Display the Text control. */
                    txt.visible = true;
                } catch (err:*) {
                    /* uh oh, an error of sorts. */
                }
            }   

            private function downloadSourceCodeZip():void {
                /* Clear existing array collection. */
                arrColl = new ArrayCollection();
                /* Hide the Text control. */
                txt.visible = false;
                /* Begin download. */
                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 >



    本文转自 OldHawk  博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2008/01/13/1036991.html ,如需转载请自行联系原作者


相关文章
|
29天前
|
Java 数据库连接 Apache
Correct the classpath of your application so that it contains compatible versions of the classes com
Correct the classpath of your application so that it contains compatible versions of the classes com
40 0
|
12天前
|
人工智能 机器人 测试技术
【CMake报错】Cannot specify compile definitions for target “PRIVATE“ which is not built...
【CMake报错】Cannot specify compile definitions for target “PRIVATE“ which is not built...
|
1月前
|
PyTorch 算法框架/工具
The “freeze_support()“ line can be omitted if the program is not going to be frozen
The “freeze_support()“ line can be omitted if the program is not going to be frozen
13 1
编译mate-control-center:error: required directory ./help does not exist
编译mate-control-center:error: required directory ./help does not exist
81 0
background引起错误:Error inflating class
background引起错误:Error inflating class
124 0
static library libs/libvpx/libvpx.a is not portable!
static library libs/libvpx/libvpx.a is not portable!
285 0
Enterprise search - Build Search dropdown list - cache issue
Enterprise search - Build Search dropdown list - cache issue
105 0
Enterprise search - Build Search dropdown list - cache issue