当前位置: 移动技术网 > IT编程>网页制作>Flex > Flex上传本地图片并提前浏览的实现方法

Flex上传本地图片并提前浏览的实现方法

2017年12月08日  | 移动技术网IT编程  | 我要评论
经常会设计一个这样的功能,比如更改个性头像,这个个性头像最终需要上传到服务器的文件系统中,但是程序希望在用户选择后直接有个预览,然后用户才进行上传。这个功能技术上其实就是需要对本地的文件能进行读取。在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>

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网