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

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

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
		      xmlns:s="library://ns.adobe.com/flex/spark" 
		      xmlns:mx="library://ns.adobe.com/flex/mx"
                      creationComplete="creationCompleteHandler(event)">
	<fx:Script>
		<![CDATA[
			import flash.net.FileReference;
                	import flash.net.FileFilter;
			import flash.events.IOErrorEvent;
			import flash.events.Event;
			private var fr:FileReference;
                        private var imageTypes:FileFilter;
                        private function creationCompleteHandler(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 browseHandler(event:Event):void {
			       //打开浏览文件的dialog
			       file.browse([imageTypes]);
		       }

                       private function selectHandler(event:Event):void {
                               //增加一个文件加载load完成后的listener	
			       fr.addEventListener(Event.COMPLETE, onLoadComplete);
			       fr.load(); //加载用户选中文件
  		       }

                       private function onLoadComplete(e:Event):void
		       {			
				imgPhoto.source = file.data;
		       }
              ]]>
      </fx: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)" />




下面是参考的文章(文章中包含写入到本地的例子使用的是save接口):

http://www.mikechambers.com/blog/2008/08/20/reading-and-writing-local-files-in-flash-player-10/


发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(Spamcheck Enabled)