flash 上传文件的actionscript 上传的各方法都有,仅供参考

简介: flash 上传文件的actionscript import flash.net.FileReference; import flash.net.

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");
}

相关文章
|
C# Windows
C#编程学习15:应用程序帮助文档(chm/pdf)制作与C#调用
C#编程学习15:应用程序帮助文档(chm/pdf)制作与C#调用
C#编程学习15:应用程序帮助文档(chm/pdf)制作与C#调用
|
移动开发 前端开发 JavaScript
前端实现PDF文件下载的两种方式
前端实现PDF文件下载的两种方式
2029 0
前端实现PDF文件下载的两种方式
|
Web App开发 内存技术