Prior to Flash Player 10 , if you need to write or read a file to a user system , you would need to bounce it off a server and then load it back to the user system before you can even access the file. This is no longer true in Flash Player 10 . The new API on FileReference class allows you to save and load file that is selected by the user , they are
FileReference.load() – loads data from a file that is selected by the user
FileReference.save() – save data to a file that is selected by the user
However , in order for the save() and load() to be called it need to be in response to a user interaction such as a button click and the location of the files cannot be exposed to Actionscript.
Below are the examples to use this new API
import mx.controls.Button; import mx.controls.TextArea; import flash.net.FileReference; import flash.events.Event; import flash.utils.ByteArray; private var fileReference:FileReference; private var textArea:TextArea = new TextArea(); private var loadButton:Button = new Button(); private var saveButton:Button = new Button(); private var myFilter:FileFilter = new FileFilter("Text","*.txt"); private function init():void{ textArea.width = 200; textArea.height = 200; addChild(textArea); saveButton.label = "Save" this.addChild(saveButton); saveButton.addEventListener(MouseEvent.CLICK,saveFile); loadButton.label = "Upload Text File" this.addChild(loadButton); loadButton.addEventListener(MouseEvent.CLICK,loadFile); } private function saveFile(e:MouseEvent):void{ fileReference = new FileReference(); fileReference.save(textArea.text,"test.txt"); } private function loadFile(e:MouseEvent):void{ fileReference = new FileReference(); fileReference.browse([myFilter]); fileReference.addEventListener(Event.SELECT,selectFile); fileReference.addEventListener(Event.COMPLETE,loadText); } private function selectFile(e:Event):void{ fileReference.load(); } private function loadText(e:Event):void{ var data:ByteArray = fileReference.data; textArea.text = data.readUTFBytes(data.bytesAvailable); fileReference = null; } |
Of course you can also use Event Listeners to make sure that the file are properly loaded or if the user canceled the file browsing.
Here’s the working example
