Flex中利用FileReference类下载文件的例子

接下来的例子演示了Flex中如何利用Flash播放器的FileReference类(flash.net.FileReference),从服务器端下载文件到本地。在这个例子中,同样还可以了解DataGrid中通过设置 showDataTips属性为True并且在dataTipField列中指定一个值。
让我们先来看一下Demo(可以右键View Source或 点击这里察看源代码
Download: main.mxml
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
  3.         layout="vertical"
  4.         verticalAlign="middle"
  5.         backgroundColor="white"
  6.         creationComplete="init();">  
  7.     <mx:Script>
  8.         <![CDATA[
  9.             import mx.controls.Alert;
  10.             import mx.collections.ArrayCollection;
  11.             import flash.net.FileReference;  
  12.             [Bindable]
  13.             [Embed('assets/disk.png')]
  14.             private var diskIcon:Class;  
  15.             [Bindable]
  16.             private var arrColl:ArrayCollection;  
  17.             /* URL of the file to download. */
  18.             private const FILE_URL:String = "http://blog.minidx.com/ext/downloading-files-in-flex-using-the-filereference-class/srcview/main.zip";  
  19.             private var fileRef:FileReference;
  20.             private var urlReq:URLRequest;  
  21.             private function init():void {
  22.                 /* Initialize the array collection to an empty collection. */
  23.                 arrColl = new ArrayCollection();  
  24.                 /* Set up the URL request to download the file specified by the FILE_URL variable. */
  25.                 urlReq = new URLRequest(FILE_URL);  
  26.                 /* Define file reference object and add a bunch of event listeners. */
  27.                 fileRef = new FileReference();
  28.                 fileRef.addEventListener(Event.CANCEL, doEvent);
  29.                 fileRef.addEventListener(Event.COMPLETE, doEvent);
  30.                 fileRef.addEventListener(Event.OPEN, doEvent);
  31.                 fileRef.addEventListener(Event.SELECT, doEvent);
  32.                 fileRef.addEventListener(HTTPStatusEvent.HTTP_STATUS, doEvent);
  33.                 fileRef.addEventListener(IOErrorEvent.IO_ERROR, doEvent);
  34.                 fileRef.addEventListener(ProgressEvent.PROGRESS, doEvent);
  35.                 fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, doEvent);
  36.             }  
  37.             private function doEvent(evt:Event):void {
  38.                 /* Create shortcut to the FileReference object. */
  39.                 var fr:FileReference = evt.currentTarget as FileReference;  
  40.                 /* Add event order and type to the DataGrid control. */
  41.                 arrColl.addItem({data:arrColl.length+1, type:evt.type, eventString:evt.toString()});  
  42.                 try {
  43.                     /* Update the Model. */
  44.                     fileRefModel.creationDate = fr.creationDate;
  45.                     fileRefModel.creator = fr.creator;
  46.                     fileRefModel.modificationDate = fr.modificationDate;
  47.                     fileRefModel.name = fr.name;
  48.                     fileRefModel.size = fr.size;
  49.                     fileRefModel.type = fr.type;
  50.                     /* Display the Text control. */
  51.                     txt.visible = true;
  52.                 } catch (err:*) {
  53.                     /* uh oh, an error of sorts. */
  54.                 }
  55.             }  
  56.             private function downloadSourceCodeZip():void {
  57.                 /* Clear existing array collection. */
  58.                 arrColl = new ArrayCollection();
  59.                 /* Hide the Text control. */
  60.                 txt.visible = false;
  61.                 /* Begin download. */
  62.                 fileRef.download(urlReq);
  63.             }  
  64.             private function showAlert(item:Object):void {
  65.                 Alert.show(item.eventString, item.type);
  66.             }
  67.         ]]>
  68.     </mx:Script>  
  69.     <mx:Model id="fileRefModel">
  70.         <file>
  71.             <creationDate>{""}</creationDate>
  72.             <creator>{""}</creator>
  73.             <modificationDate>{""}</modificationDate>
  74.             <name>{""}</name>
  75.             <size>{""}</size>
  76.             <type>{""}</type>
  77.         </file>
  78.     </mx:Model>  
  79.     <mx:Button id="downloadBtn" label="Download example source code" icon="{diskIcon}" click="downloadSourceCodeZip()" toolTip="{FILE_URL}" height="40" />  
  80.     <mx:DataGrid id="debug" dataProvider="{arrColl}" width="{downloadBtn.width}" rowCount="5" rowHeight="22" itemClick="showAlert(event.currentTarget.selectedItem)">
  81.         <mx:columns>
  82.             <mx:DataGridColumn dataField="data" headerText="#" width="20" />
  83.             <mx:DataGridColumn dataField="type" headerText="Type" showDataTips="true" dataTipField="eventString" />
  84.         </mx:columns>
  85.     </mx:DataGrid>  
  86.     <mx:Text id="txt" condenseWhite="true" visible="false">
  87.         <mx:text>
  88.         creationDate: {fileRefModel.creationDate}
  89.         creator: {fileRefModel.creator}
  90.         modificationDate: {fileRefModel.modificationDate}
  91.         name: {fileRefModel.name}
  92.         size: {fileRefModel.size}
  93.         type: {fileRefModel.type}
  94.         </mx:text>
  95.     </mx:Text>  
  96. </mx:Application>

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