上传
一直想搞这个功能, 想了很多歪门邪道, 未果!
昨天突然在 blueidea 上看到关于 flash 8 的新特性 (虽然早就装上了 flash 8 但一直没有仔细研究, 真是惭愧 :p) 中介绍了 flash 8 提供了上载和下载的接口, 马上下去研究了一下, 果然不错. 虽然上传还是需要后台脚本的支持, 但也足够我美上一阵子的了 :d
下面是研究成果, 不敢独享, 拿出来示众 :d
uploadfile.fla
code:
// 加载包
import flash.net.filereference;
// 定义主角 filereference 对象
var fileref:filereference = new filereference();
// 定义 监听对象
var filelsn:object = new object();
// 定义 文件类型数组 filereference 对象的 browse 方法的参数
// description: 描述
// extension : 扩展名列表
var filetyp:array = new array({description:image files, extension:*.jpg;*.gif}, {description:document files, extension:*.txt;*.doc});
btnbrowse.onrelease = function() {
// 打开 选择文件 对话框
fileref.browse(filetyp);
};
btnupload.onrelease = function() {
// 开始上传
fileref.upload(uploadfile.php);
};
btnclear.onrelease = function() {
strstate.text = ;
};
// 选择文件事件
filelsn.onselect = function(file:filereference) {
strstate.text += onselect '+file.name+'\n;
};
// 取消选择
filelsn.oncancel = function(file:filereference) {
strstate.text += cancel!\n;
};
// 打开文件开始上传
filelsn.onopen = function(file:filereference) {
strstate.text += uploading... '+file.name+'\n;
};
// 上传成功
filelsn.oncomplete = function(file:filereference) {
strstate.text += file '+file.name+' upload successfull!\n;
};
// 上传过程
filelsn.onprogress = function(file:filereference, bytesloaded:number, bytestotal:number):void {
strstate.text += onprogress: +file.name+ with bytesloaded: +bytesloaded+ bytestotal: +bytestotal+\n;
};
// http 错误
filelsn.onhttperror = function(file:filereference, httperror:number) {
strstate.text += http error: +httperror+\n;
};
// io 错误
filelsn.onioerror = function(file:filereference):void {
strstate.text += io error: +file.name+\n;
};
// 安全错误
filelsn.onsecurityerror = function(file:filereference, errorstring:string):void {
strstate.text += onsecurityerror: +file.name+ errorstring: +errorstring;
};
// 绑定监听器
fileref.addlistener(filelsn);
// 其他属性或事件请参考帮助中关于 filereference 对象的章节
uploadfile.php
code:
源文件下载