flash 上传文件的actionscript
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.net.FileFilter;
import flash.display.Sprite;
import flash.events.*;
var fileRef = new FileReference();
var fileListener = new Object();
var totalBytes:Number = 0;
var uploadedBytes:Number = 0;
var acceptFileType:String = getFlashVars("acceptFileType");
var comJsFun:String=getFlashVars("ComJsFun");
//this.tbFilePath.text = comJsFun;
var uploadURL:URLRequest = new URLRequest();
var xmlRequest:URLRequest = new URLRequest();
var xmlLoader:URLLoader = new URLLoader();
//初始化系统
function init() {
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
this.progressBar.visible = false;
//设置按钮文字大小。
var myFormat = new TextFormat();
myFormat.size = 12;
this.btBrowser.setStyle("textFormat", myFormat);
this.btUpload.setStyle("textFormat",myFormat);
this.tbFilePath.setStyle("textFormat", myFormat);
this.mcWaterStyle.style0.setStyle("textFormat", myFormat);
this.mcWaterStyle.style1.setStyle("textFormat", myFormat);
this.mcWaterStyle.style2.setStyle("textFormat", myFormat);
this.uploadInfo.setStyle("textFormat", myFormat);
if(acceptFileType==""){
/*从外部获取上传附加的文件类型。*/
xmlRequest = new URLRequest("swffileupload.xml");
//var loadVidateFile:URLRequest = new URLRequest("http://192.168.18.4/admin/article/x.aspx");
xmlLoader.load(xmlRequest);
xmlLoader.addEventListener(Event.COMPLETE,loaderHandler);
}
}
init();
//按钮事件
this.btBrowser.addEventListener(MouseEvent.CLICK, browseHandler);
this.btUpload.addEventListener(MouseEvent.CLICK, UploadHandler);
fileRef.addEventListener(Event.SELECT,selectHandler);
fileRef.addEventListener(Event.CANCEL, cancelHandler);
fileRef.addEventListener(Event.OPEN, openHandler);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
fileRef.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA,uploadCompleteDataHandler)
fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
fileRef.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler);
fileRef.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
fileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
//浏览按钮事件
function browseHandler(event:MouseEvent):void {
fileRef.browse(browseGetTypes());
}
function browseGetTypes():Array {
var allTypes:Array = new Array(browseGetFileTypeFilter());
return allTypes;
}
function browseGetFileTypeFilter():FileFilter {
if(acceptFileType!=""){
var arr = acceptFileType.split("|");
var FileExtension = "";
for(var i=0;i<arr.length;i++){
if (arr[i] == "")
continue;
if(i==0)
FileExtension = "*."+arr[i];
else
FileExtension = FileExtension+";*."+arr[i];
}
return new FileFilter("文件格式("+FileExtension+")", ""+FileExtension+"");
}else{
return new FileFilter("所有文件(*.*)","*.*");
}
//return new FileFilter("所有文件(*.*)","*.*");
}
//加载上传配置事件
function loaderHandler(event:Event):void {
var myXML:XML = new XML(xmlLoader.data);
//myXML = XML();
acceptFileType = myXML.child("Upload").ContontFileStyle;
trace("--"+myXML.child("Upload").ContontFileStyle+"--");
if(this.uploadInfo.text=="")
this.uploadInfo.text = "允许的格式:"+myXML.child("Upload").ContontFileStyle;
}
//选择文件事件
function selectHandler(event:Event):void{
this.uploadInfo.text = "";
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
if (fileRef.size > 0){
totalBytes = fileRef.size;
this.tbFilePath.text = fileRef.name+ "[" + this.getSizeType(totalBytes) + "]";
var fileExtName = fileRef.name.substring(fileRef.name.lastIndexOf(".")+1);
switch(fileExtName.toLowerCase()){
case "jpg":
case "png":
case "jpeg":
case "gif":
case "bmp":
this.mcWaterStyle.visible = true;
break;
case "flv":
this.mcFilePlayer.visible = true;
this.mcFilePlayer.mcWidth.text = 410;
this.mcFilePlayer.mcHeight.text = 370;
break;
case "swf":
this.mcFilePlayer.visible = true;
this.mcFilePlayer.mcWidth.text = 550;
this.mcFilePlayer.mcHeight.text = 400;
break;
case "rm":
case "rmvb":
case "mp3":
case "avi":
case "mpg":
case "mpeg":
case "asf":
case "wmv":
case "wma":
this.mcFilePlayer.visible = true;
this.mcFilePlayer.mcWidth.text = 550;
this.mcFilePlayer.mcHeight.text = 400;
break;
default:
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
break;
}
}else{
this.uploadInfo.text = "错误:您没有选择文件!";
}
}
//上传过程中取消
function cancelHandler(event:Event):void{
this.progressBar.visible = false;
};
//当上载或下载操作开始时
function openHandler(event:Event):void{
this.tbFilePath.visible = false;
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
this.btBrowser.visible = false;
this.btUpload.label = "取消";
this.progressBar.visible = true;
};
//点击伤
function UploadHandler(event:MouseEvent):void{
if (this.btUpload.label=="上传"){
var WaterMarkStyleP:String = "";
if(this.mcWaterStyle.style0.selected == true)
WaterMarkStyleP = "0";
else if(this.mcWaterStyle.style1.selected == true)
WaterMarkStyleP = "1";
else if(this.mcWaterStyle.style2.selected == true)
WaterMarkStyleP = "2";
var mcFilePlayerP:String="&width="+this.mcFilePlayer.mcWidth;
mcFilePlayerP += "&height="+this.mcFilePlayer.mcHeigth;
if(this.mcFilePlayer.mcAutoYes.selected == true)
mcFilePlayerP += "&auto=true";
else if(this.mcFilePlayer.mcAutoNo.selected == true)
mcFilePlayerP += "&auto=false";
uploadURL.url="http://localhost:11452/UploadFile.aspx?type=1";
//uploadURL.url="Upload_File_SWF.aspx?WaterMarkStyle="+WaterMarkStyleP+mcFilePlayerP;
fileRef.upload(uploadURL);
}else if(this.btUpload.label=="取消"){
this.tbFilePath.visible = true;
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
this.btBrowser.visible = true;
this.btUpload.label = "上传";
this.progressBar.visible = false;
this.uploadInfo.text="";
}else if(this.btUpload.label=="重新上传"){
this.tbFilePath.visible = true;
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
this.btBrowser.visible = true;
this.btUpload.label = "上传";
this.progressBar.visible = false;
}
}
//在文件上载或下载操作期间定期调用
function progressHandler(event:ProgressEvent):void{
//var fileRef:FileReference = FileReference(event.target);
if(event.bytesLoaded==event.bytesTotal){
this.uploadInfo.text= "正在转移数据,请稍后--"+getSizeType(event.bytesLoaded)+"/"+getSizeType(event.bytesTotal);
}else{
this.progressBar.mcMask.width = (event.bytesLoaded/event.bytesTotal)*this.progressBar.mcLoaded.width;
this.uploadInfo.text="上传文件中,请等待--"+getSizeType(event.bytesLoaded)+"/"+getSizeType(event.bytesTotal);
}
}
function completeHandler(event:Event):void {
//trace("completeHandler: " + event);
this.tbFilePath.visible = true;
this.tbFilePath.text = "";
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
this.btBrowser.visible = true;
this.btUpload.label = "上传";
this.progressBar.visible = false;
//this.uploadInfo.text = "上传成功!";
}
function uploadCompleteDataHandler(event:DataEvent):void {
if(event.data.indexOf("|")!=-1){
var fileInfoArr = event.data.split("|");
if(fileInfoArr[0].toLowerCase()=="true"){
this.uploadInfo.text = "上传成功:"+fileInfoArr[1]+"!";
if(comJsFun!=""){
//ExternalInterface.call("UploadForEditor","hh");
ExternalInterface.call("UploadForEditor",event.data.replace("true|",""));
//this.tbFilePath.text = event.data;
}
}else{
this.uploadInfo.text = "上传失败:"+EncodeUtf8(fileInfoArr[1])+"!";
}
}
trace("uploadCompleteData: " + event.data);
}
//错误事件
function httpStatusHandler(event:HTTPStatusEvent):void {
trace("httpStatusHandler: " + event);
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
this.uploadInfo.text="HTTP错误: " + event;
}
function ioErrorHandler(event:IOErrorEvent):void {
trace("ioErrorHandler: " + event);
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
this.uploadInfo.text="IO错误: " + event;
}
function securityErrorHandler(event:SecurityErrorEvent):void {
trace("openHandler: " + event);
this.mcWaterStyle.visible = false;
this.mcFilePlayer.visible = false;
this.uploadInfo.text="IO安全设置错误: " + event;
}
/*--------------------以下为常用函数-------------
---------------------------------------------*/
//处理文件大小表示方法
function getSizeType(s)
{
var danwei = ["Byte","KB","MB","GB" ];
var d = 0;
while ( s >= 900 )
{
s = Math.round(s*100/1024)/100;
d++;
}
return s+danwei[d];
}
function getFlashVars(parName){
var parValue:String=stage.loaderInfo.parameters[parName];
if(parValue==null)
return "";
else
return parValue;
}
//转换乱码
function EncodeUtf8(str : String):String {
var oriByteArr : ByteArray = new ByteArray();
oriByteArr.writeUTFBytes(str);
var tempByteArr : ByteArray = new ByteArray();
for (var i = 0; i<oriByteArr.length; i++) {
if (oriByteArr[i] == 194) {
tempByteArr.writeByte(oriByteArr[i+1]);
i++;
} else if (oriByteArr[i] == 195) {
tempByteArr.writeByte(oriByteArr[i+1] + 64);
i++;
} else {
tempByteArr.writeByte(oriByteArr[i]);
}
}
tempByteArr.position = 0;
return tempByteArr.readMultiByte(tempByteArr.bytesAvailable,"chinese");
//return tempByteArr.readMultiByte(tempByteArr.bytesAvailable,"chinese");
}