Flex中使用FileReference类下载文件
下面的实例演示了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.Target.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>
?