http://help.adobe.com/zh_CN/as3/dev/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cf8.html
从文件加载数据
使用 FileReference.load() 方法可以将数据从本地文件加载到内存中。
调用 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"); }