flex中读取本地文件[图像为例]

  经常会设计一个这样的功能,比如更改个性头像,这个个性头像最终需要上传到服务器的文件系统中,但是程序希望在用户选择后直接有个预览,然后用户才进行上传。这个功能技术上其实就是需要对本地的文件能进行读取。在flash player10(flash palayer 的版本应大于等于10)中有个类FileReference的类可以实现这个功能,而实现对文件读取的接口是load( )函数,要注意的是: a、这个函数只能在UI操作中使用,比如用户按下按钮。b、加载进来后的本地文件无法在AS中使用 c、这个接口是一个异步的过程,也就不是马上就加载进来,需要加Listener来操作。下面是参考代码

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:dg="DataGrid.*"
     creationComplete="init(event)">
    
    <mx:Script>
        <![CDATA[
            import flash.events.IOErrorEvent;
            import flash.events.Event;
            import flash.net.FileReference;
            import flash.net.FileFilter;
            import mx.controls.Alert;
            private var fr:FileReference;
            private var imageTypes:FileFilter;
            private function init(event:Event):void{
                fr=new FileReference();
                imageTypes=new FileFilter("Images (*.jpg, *.jpeg, *.png, *.gif)","*.jpg; *.jpeg; *.png; *.gif;");
                //增加当打开浏览文件后,用户选择好文件后的listener
                fr.addEventListener(Event.SELECT,selectHandler);
            }
            
            private function selectHandler(event:Event):void{
                //增加一个文件加载load完成后的listener
                fr.addEventListener(Event.COMPLETE,onLoadComplete);
                fr.load();//加载用户选中文件
                
            }
            private function onLoadComplete(event:Event):void{
                imgPhoto.source=fr.data;
            }
            private function browseHandler(event:Event):void{
                fr.browse([imageTypes]);
            }
            private function imageIOErrorHandler(event:IOErrorEvent):void{
                Alert.show(event.text);
            }
            
        ]]>
    </mx:Script>
    
    <mx:Image id="imgPhoto" visible="true" autoLoad="true" width="100" height="100" ioError="imageIOErrorHandler(event)"/>
    <mx:Button id="btnBrowse" label="Browse" click="browseHandler(event)"/>
    
</mx:Application>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值