<?xml version="1.0" encoding="utf-8"?>
<mx:Application creationComplete="initApp()" width="590" height="24" backgroundColor="white" xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
//import flash.utils.Timer;
//import mx.controls.ProgressBar;
import mx.controls.*;
import flash.external.*;
private var fileRefList:FileReferenceList = new FileReferenceList();
private var uploadCount:int = 0;
private var instanceName:String = "";
private var uploadUrl:String = "";
private var fileTypes:String = "";
private var fileCount:int = 100;
private var fileSize:Number = 1;
private var fileSize_mode:String = "one";
private var fileArray:Array = new Array();
private var onSelected_JS:String = "";//onSelected";
private var onDelete_JS:String = "";
private var onClear_JS:String = "";
private var onUploadding_JS:String = "";
private var onUploaded_JS:String = "";
//得到上传文件个数
public function getUploadCount():int{return uploadCount;}
//js实例名称设置
public function setInstanceName(name:String):void { instanceName = name; }
public function getInstanceName():String { return instanceName; }
//按钮text设置
public function setButtonText(text:String):void { btn_browse.label = text; }
//上传地址设置
public function setUploadUrl(url:String):void { uploadUrl = url; }
public function getUploadUrl():String { return uploadUrl; }
//文件类型设置
public function setFileType(types:String):void { fileTypes = types; }
public function getFileType():String { return fileTypes; }
//文件数量设置
public function setFileCount(count:int):void { fileCount = count; }
public function getFileCount():int { return fileCount; }
//文件大小设置
public function setFileSize(size:int):void { size = size > 0 ? size : 0;size = size < 200 ? size : 200; fileSize = size; }
public function getFileSize():int { return fileSize; }
//上传类型设置
public function setFileSize_mode(mode:String):void { fileSize_mode = mode; }
public function getFileSize_mode():String { return fileSize_mode; }
//得到上传文件信息
public function getFileInfo():String
{
var fileInfo:String = "";
try
{
resetFileInfo();
for(var i:int=0;i<fileArray.length;i++){fileInfo += fileArray[i] + "($$)";}
fileInfo = fileInfo.substr(0,fileInfo.length-4);
}
catch(e:Error){}
return fileInfo;
}
//js交互方法名称
public function set_onSelected_JS(jsName:String):void { onSelected_JS = jsName; }
public function get_onSelected_JS():String { return onSelected_JS; }
public function set_onDelete_JS(jsName:String):void { onDelete_JS = jsName; }
public function get_onDelete_JS():String { return onDelete_JS; }
public function set_onClear_JS(jsName:String):void { onClear_JS = jsName; }
public function get_onClear_JS():String { return onClear_JS; }
public function set_onUploadding_JS(jsName:String):void { onUploadding_JS = jsName; }
public function get_onUploadding_JS():String { return onUploadding_JS; }
public function set_onUploaded_JS(jsName:String):void { onUploaded_JS = jsName; }
public function get_onUploaded_JS():String { return onUploaded_JS; }
//删除文件
public function deleteFile(index:int,count:int):String
{
//return "";
index = index >= 0 ? index : 0;
index = index <= fileRefList.fileList.length ? index : fileRefList.fileList.length;
count = index + count <= fileRefList.fileList.length ? count : 0;
fileRefList.fileList.splice(index,count);
resetFileInfo();
return "true";
}
//清空文件列表
public function clear():String
{
var result:String = "false";
try
{
fileRefList.fileList.splice(0,fileRefList.fileList.length);
resetFileInfo();
result = "true";
}
catch(e:Event){}
return result;
}
//重置上传文件信息
public function resetFileInfo():void
{
fileArray.splice(0,fileArray.length);
var _file:FileReference = new FileReference();
for(var j:int=0;j<fileRefList.fileList.length;j++)
{
_file = fileRefList.fileList[j];
fileArray.push(_file.name + "($)" + _file.size + "($)" + _file.type);
}
uploadCount = fileRefList.fileList.length;
}
//得到文件列表的总大小
private function getFileListSize(_fileList:FileReferenceList):int
{
var _allSize:int = 0;
for(var i:int=0;i<_fileList.fileList.length;i++){_allSize += _fileList.fileList[i].size;}
return _allSize;
}
//开始上传
public function upload():void
{
for(var i:Number=0;i<fileRefList.fileList.length;i++)
{
fileRefList.fileList[i].upload(new URLRequest(uploadUrl));
}
clear();
ExternalInterface.call(instanceName + "." + onUploaded_JS);
}
internal function initApp():void
{
btn_browse.addEventListener(MouseEvent.CLICK,onBrowse);
fileRefList.addEventListener(Event.SELECT,onSelected);
ExternalInterface.addCallback("getUploadCount", getUploadCount);
ExternalInterface.addCallback("setInstanceName", setInstanceName);
ExternalInterface.addCallback("getInstanceName", getInstanceName);
ExternalInterface.addCallback("setButtonText", setButtonText);
ExternalInterface.addCallback("setUploadUrl", setUploadUrl);
ExternalInterface.addCallback("getUploadUrl", getUploadUrl);
ExternalInterface.addCallback("setFileType", setFileType);
ExternalInterface.addCallback("getFileType", getFileType);
ExternalInterface.addCallback("setFileCount", setFileCount);
ExternalInterface.addCallback("getFileCount", getFileCount);
ExternalInterface.addCallback("setFileSize", setFileSize);
ExternalInterface.addCallback("getFileSize", getFileSize);
ExternalInterface.addCallback("setFileSize_mode", setFileSize_mode);
ExternalInterface.addCallback("getFileSize_mode", getFileSize_mode);
ExternalInterface.addCallback("getFileInfo", getFileInfo);
ExternalInterface.addCallback("set_onSelected_JS", set_onSelected_JS);
ExternalInterface.addCallback("get_onSelected_JS", get_onSelected_JS);
ExternalInterface.addCallback("set_onDelete_JS", set_onDelete_JS);
ExternalInterface.addCallback("get_onDelete_JS", get_onDelete_JS);
ExternalInterface.addCallback("set_onClear_JS", set_onClear_JS);
ExternalInterface.addCallback("get_onClear_JS", get_onClear_JS);
ExternalInterface.addCallback("set_onUploadding_JS", set_onUploadding_JS);
ExternalInterface.addCallback("get_onUploadding_JS", get_onUploadding_JS);
ExternalInterface.addCallback("set_onUploaded_JS", set_onUploaded_JS);
ExternalInterface.addCallback("get_onUploaded_JS", get_onUploaded_JS);
ExternalInterface.addCallback("deleteFile", deleteFile);
ExternalInterface.addCallback("clear", clear);
ExternalInterface.addCallback("resetFileInfo", resetFileInfo);
ExternalInterface.addCallback("upload", upload);
}
//选择文件前设置文件类型过滤
private function onBrowse(evt:Event):void
{
if(fileTypes != "")
{
var fileTypes:FileFilter = new FileFilter("Images(" + fileTypes.split(";").toString(",") + ")",fileTypes);
fileRefList.browse(new Array(fileTypes))
}
else{fileRefList.browse(null);}
}
//选择文件完毕后文件大小过滤
private function onSelected(evt:Event):void
{
if(fileSize_mode == "one")
{
fileRefList = setFileListSize_one(fileRefList,fileSize*1024*1024);
fileRefList = setFileListSize_all(fileRefList,200*1024*1024);
if(fileRefList.fileList.length > fileCount){fileRefList.fileList.splice(fileCount,fileRefList.fileList.length - fileCount);}
}
else if(fileSiz