FileReference

使用FileReference加载与保存数据
本文介绍如何利用ActionScript 3中的FileReference类来加载和保存文件数据。包括使用browse()方法让用户选择文件,通过load()方法加载文件,并监听加载进度及完成事件。同时,也介绍了如何设置POST请求参数上传文件。

http://help.adobe.com/zh_CN/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cf8.html




从文件加载数据

使用 FileReference.load() 方法可以将数据从本地文件加载到内存中。

注: 代码必须先调用 FileReference.browse() 方法,让用户选择要加载的文件。此限制不适用于在应用程序安全沙箱的 Adobe AIR 中运行的内容

调用 FileReference.load() 方法后,该方法立即就会返回,但并不能立即得到所加载的数据。FileReference 对象在加载过程的每个步骤中都会调度事件以调用侦听器方法。

FileReference 对象在加载过程中将调度以下事件。

  • open 事件 (Event.OPEN):在加载操作开始时调度。

  • progress 事件 (ProgressEvent.PROGRESS):以字节为单位从文件读取数据时定期调度。

  • complete 事件 (Event.COMPLETE):加载操作成功完成时调度。

  • ioError 事件 (IOErrorEvent.IO_ERROR):如果由于在打开文件或从文件读取数据时发生输入/输出错误而使加载过程失败,则调度此事件。

FileReference 对象调度 complete 事件后,即可将所加载的数据作为 FileReference 对象的 data 属性中的 ByteArray 进行访问。

下面的示例演示如何提示用户选择一个文件,然后从该文件将数据加载到内存中:

package 
{ 
     import flash.display.Sprite; 
    import flash.events.*;  
    import flash.net.FileFilter; 
    import flash.net.FileReference; 
    import flash.net.URLRequest; 
    import flash.utils.ByteArray; 
 
    public class FileReferenceExample1 extends Sprite 
    { 
        private var fileRef:FileReference; 
        public function FileReferenceExample1() 
        { 
            fileRef = new FileReference(); 
            fileRef.addEventListener(Event.SELECT, onFileSelected); 
            fileRef.addEventListener(Event.CANCEL, onCancel); 
            fileRef.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
            fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, 
                        onSecurityError); 
            var textTypeFilter:FileFilter = new FileFilter("Text Files (*.txt, *.rtf)", 
                        "*.txt;*.rtf"); 
            fileRef.browse([textTypeFilter]); 
        } 
        public function onFileSelected(evt:Event):void 
        { 
            fileRef.addEventListener(ProgressEvent.PROGRESS, onProgress); 
            fileRef.addEventListener(Event.COMPLETE, onComplete); 
            fileRef.load(); 
        } 
 
        public function onProgress(evt:ProgressEvent):void 
        { 
            trace("Loaded " + evt.bytesLoaded + " of " + evt.bytesTotal + " bytes."); 
        } 
 
        public function onComplete(evt:Event):void 
        { 
            trace("File was successfully loaded."); 
            trace(fileRef.data); 
        } 
 
        public function onCancel(evt:Event):void 
        { 
            trace("The browse request was canceled by the user."); 
        } 
 
        public function onIOError(evt:IOErrorEvent):void 
        { 
            trace("There was an IO Error."); 
        } 
        public function onSecurityError(evt:Event):void 
        { 
            trace("There was a security error."); 
        } 
    } 
}



将数据保存到本地文件




使用 POST 或 GET 请求方法将附加变量传递到上载脚本。要将附加 POST 变量发送到上载脚本,可以使用下面的代码:

var fileRef:FileReference = new FileReference(); 
fileRef.addEventListener(Event.SELECT, selectHandler); 
fileRef.addEventListener(Event.COMPLETE, completeHandler); 
fileRef.browse(); 
function selectHandler(event:Event):void 
{ 
    var params:URLVariables = new URLVariables(); 
    params.date = new Date(); 
    params.ssid = "94103-1394-2345"; 
    var request:URLRequest = new URLRequest("http://www.yourdomain.com/FileReferenceUpload/fileupload.cfm"); 
    request.method = URLRequestMethod.POST; 
    request.data = params; 
    fileRef.upload(request, "Custom1"); 
} 
function completeHandler(event:Event):void 
{ 
    trace("uploaded"); 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值