Flex上传本地图片并提前浏览的实现方法
经常会设计一个这样的功能,比如更改个性头像,这个个性头像最终需要上传到服务器的文件系统中,但是程序希望在用户选择后直接有个预览,然后用户才进行上传。这个功能技术上其实就是需要对本地的文件能进行读取。在flash player10中有个类FileReference的类可以实现这个功能,而实现对文件读取的接口是load( )函数,要注意的是:
a、这个函数只能在UI操作中使用,比如用户按下按钮。
b、加载进来后的本地文件无法在AS中使用
c、这个接口是一个异步的过程,也就不是马上就加载进来,需要加Listener来操作。
下面是参考代码
<?xml version="1.0" encoding="utf-8"?>
<s: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" minWidth="955" minHeight="600"
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;")
fr.addEventListener(Event.SELECT, selectHandler);//增加当打开浏览文件后,用户选择好文件后的Listener
}
private function browseHandler(event:Event):void {
fr.browse([imageTypes]);//打开浏览文件的dialog
}
private function selectHandler(event:Event):void {
fr.addEventListener(Event.COMPLETE, onLoadComplete);//增加一个文件加载load完成后的listener
fr.load(); //加载用户选中文件
}
private function onLoadComplete(e:Event):void
{
imgPhoto.source = fr.data;
}
]]>
</fx:Script>
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Declarations>
<!-- 将非可视元素(例如服务、值对象)放在此处 -->
</fx:Declarations>
<mx:Image id="imgPhoto" visible="true" autoLoad="true" width="1000" height="500"/>
<mx:Button id="btnBrowse" label="Browse" click="browseHandler(event)" />
</s:Application>
您可能感兴趣的文章
- 01-11flex调用webservice中的自定义类的方法
- 01-11Flex实现的上传摄像头拍照并将UI保存为图片
- 01-11Flex字体加粗问题只能对英文的字体加粗
- 01-11flex利用webservice上传照片实现代码
- 01-11Flex控制弹出窗口拖动范围示例代码
- 01-11flex内嵌html网页示例代码
- 01-11Flex中在Tree绑定数据后自动展开树节点的方法
- 01-11Flex弹出窗口请求Action函数示例
- 01-11Flex中通过RadioButton进行切换示例代码
- 01-11Flex中TabNavigator设置Tabs样式思路及源码
阅读排行
本栏相关
- 01-11flex调用webservice中的自定义类的方法
- 01-11Flex实现的上传摄像头拍照并将UI保存
- 01-11datagrid不可编辑行有关问题的控制方法
- 01-11Flex控制弹出窗口拖动范围示例代码
- 01-11flex利用webservice上传照片实现代码
- 01-11Flex字体加粗问题只能对英文的字体加
- 01-11Flex中在Tree绑定数据后自动展开树节点
- 01-11flex内嵌html网页示例代码
- 01-11Flex中通过RadioButton进行切换示例代码
- 01-11Flex弹出窗口请求Action函数示例
随机阅读
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 04-02jquery与jsp,用jquery
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10SublimeText编译C开发环境设置
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-11ajax实现页面的局部加载
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法实例总结
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文