这是一个简单的图片上传程序,可以将本地图片上传到网上,之后还会再写一个加载显示已经上传的图片的功能
注:
up_name:为动态文本框,用来显示选中的图片的文件名
liulan:为"浏览"按钮,点击它之后会弹出浏览框,选择要上传的图片
shangchuan:为"上传"按钮,点击它之后会将选好的图片上传
loading:为动态文本框,用来显示上传进度百分比和上传成功信息等
将这几个元件全部放到一个mc中,并将下面的类绑定到这个mc
package {
import flash.display.*;
import flash.text.TextField;
import flash.events.*;
import flash.system.*;
import flash.net.URLRequest;
//上传类
import flash.net.FileReference;
//文件类型过滤类
import flash.net.FileFilter;
public class shangchuanlan extends Sprite {
//创建上传类
public var fileRef:FileReference=new FileReference();
public function shangchuanlan() {
liulan.buttonMode=true;
shangchuan.buttonMode=true;
//点击浏览按钮时的事件
liulan.addEventListener(MouseEvent.CLICK,click_liulan);
//点击上传按钮时的事件
shangchuan.addEventListener(MouseEvent.CLICK,up_load);
}
//============================================= 一条华丽的分割线 ==============================================================//
private function click_liulan(e:MouseEvent):void {
//设置文件类型
var imageTypes:FileFilter=new FileFilter("Images(*.jpg, *.jpeg, *.gif)","*.jpg;, *.jpeg;, *.gif;");
//将所需文件类型放到一个数组中,因为后面的browse中的参数是数组
var allTypes:Array=new Array(imageTypes);
//弹出框,文件类型为allTypes数组中的
fileRef.browse(allTypes);
//当点击弹出框中的"打开"后,执行up_select函数
fileRef.addEventListener(Event.SELECT,up_select);
//上传或下载完成后事件,执行up_complete
fileRef.addEventListener(Event.COMPLETE,up_complete);
//成功上传并从服务器接收数据之后
fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,up_complete_data);
//上传或下载开始时执行
fileRef.addEventListener(Event.OPEN,up_open);
//上传或下载期间执行
fileRef.addEventListener(ProgressEvent.PROGRESS,up_progress);
}
//============================================= 一条华丽的分割线 ==============================================================//
//以下是各个事件时被执行的函数
private function up_select(e:Event):void {
//将选中的文件的文件名(fileRef的name属性)显示在文本框中
up_name.text=fileRef.name;
}
private function up_load(e:MouseEvent):void {
//获取文件的类型
var fileType:String=fileRef.type;
//获取文件的大小
var fileSize:Number=fileRef.size;
trace("类型:"+fileType,"大小:"+fileSize);
//连接接口网页
var loadurl:String="http://www.xxx.com/xxx.asp";
var uploadURL:URLRequest = new URLRequest(loadurl);
//用upload事件将文件发送给网页,语法upload(网址,文件名)
fileRef.upload(uploadURL,fileRef.name);
trace(uploadURL.url);
}
private function up_complete(e:Event):void {
//显示指令发送者的信息
trace("completeHandler: " + e);
loading.text="上传成功!"
}
private function up_complete_data(e:Event):void {
//显示指令发送者的信息,即接收到的网页返回信息,其中有上传后文件的路径
trace("uploadCompleteDataHandler:"+e);
}