플랙스 멀티 업로드 소스 > 지에디터 다운로드

지에디터 다운로드

플랙스 멀티 업로드 소스 정보

플랙스 멀티 업로드 소스

본문

지블로그에서 사용된 플랙스(Flex) 로 제작된 멀티 업로드 소스코드 입니다.
플랙스 업로드 관련 프로그램 제작시 참고하세요.

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" creationComplete="init()" layout="absolute" alpha="1.0" width="100%" height="30" viewSourceURL="srcview/index.html" backgroundColor="#FFFFFF" borderStyle="none" backgroundGradientColors="#FFFFFF,#FFFFFF">
 <mx:Script>
  <![CDATA[
   import flash.external.ExternalInterface;
   import mx.controls.Alert;
   private var File:FileReference;
   private var UploadFiles:FileReferenceList;
   private var UploadPath:String = "";
   private var CurrentFileName:String = "";
   private var CurrentFileSize:Number = 0;
   private var CurrentFileBytesLoaded:Number = 0;
   private var CurrentFileBytesLoadedOld:Number = 0;
   private var TotalFileBytesLoaded:Number = 0;
   private var TotalFileBytes:Number = 0;
   private var onSelectRunFunction:String = "";
   private var index:Number = 0;
   private var is_flag:Boolean = false;
   private var FileListLimit:Number = 0;
   private var FileSizeLimit:Number = 0;
   private var NowSending:Boolean = false;
   private var CompeleteFunction:String = "";
   private function init():void
   {
    UploadFiles = new FileReferenceList;
    UploadFiles.addEventListener(Event.SELECT, onSelect);
    if( ExternalInterface.available ) {
     ExternalInterface.addCallback("path", setUploadPath);
     ExternalInterface.addCallback("list_limit", setUploadListLimit);
     ExternalInterface.addCallback("size_limit", setUploadSizeLimit);
     ExternalInterface.addCallback("select", OpenWindowFileSelectAfter);
     ExternalInterface.addCallback("browse", OpenWindowFileSelect);
     ExternalInterface.addCallback("send", UploadFilesSend);
     ExternalInterface.addCallback("get_list", getFileList);
     ExternalInterface.addCallback("get_size", getFileSize);
     ExternalInterface.addCallback("after_upload", setCompleteFunction);
    }
   }
   
   private function setCompleteFunction(funcName:String):void
   {
    if( CompeleteFunction == "" )
     CompeleteFunction = funcName;
   }
   
   private function onComplete(event:Event):void
   {
    NowSending = false;
   }
   
   private function setUploadListLimit(num:Number):void
   {
    if( FileListLimit == 0 )
     FileListLimit = num;
   }
   private function setUploadSizeLimit(num:Number):void
   {
    if( FileSizeLimit == 0 )
     FileSizeLimit = num;
   }
   
   private function setUploadPath(path:String):void
   {
    if( UploadPath == "" )
     UploadPath = path;
   }
   
   private function OpenWindowFileSelectAfter(funcName:String):void
   {
    if( onSelectRunFunction == "" );
     onSelectRunFunction = funcName;
   }
   
   private function onSelect(event:Event):void
   {
    ExternalInterface.call(onSelectRunFunction);
   }
   private function getFileList():Array
   {
    var FileNameList:Array = new Array();
    for(var i:Number=0; i<UploadFiles.fileList.length; i++)
    {
     File = UploadFiles.fileList[i];
     FileNameList[i] = File.name;
    }
    return FileNameList;
   }
   private function getFileSize():Array
   {
    var FileSizeList:Array = new Array();
    for(var i:Number=0; i<UploadFiles.fileList.length; i++)
    {
     File = UploadFiles.fileList[i];
     FileSizeList[i] = File.size;
    }
    return FileSizeList;
   }
   
   private function OpenWindowFileSelect():void
   {
    if( NowSending == true ) return;
    
    is_flag = true;
    index = 0;
       //var imgFilter:FileFilter = new FileFilter("Images(*.png;*.gif;*.jpg)","*.png;*.gif;*.jpg");
       //var arcFilter:FileFilter = new FileFilter("Archives(*.zip;*.gz;*.tar)","*.zip;*.gz;*.tar");
       var allFilter:FileFilter = new FileFilter("All(*.*)","*.*");
       //files.browse([imgFilter,arcFilter,allFilter]); 
       UploadFiles.browse([allFilter]);
   }
   private function UploadFilesSend():String
   {
    if( is_flag == false ) return "false";
    
    var msg:String = "";
    var limitSize:Number = 0;
    var i:Number;
    TotalFileBytes = 0;
    TotalFileBytesLoaded = 0;
    index = 0;
    
    if(FileListLimit!=0)
    {
     if(FileListLimit<UploadFiles.fileList.length)
     {
      msg = FileListLimit + "개만 업로드 하실 수 있습니다.";
      return msg;
     }
    }
    for(i=0; i<UploadFiles.fileList.length; i++)
    {
     File = UploadFiles.fileList[i];
     if(FileSizeLimit!=0)
     {
      if(FileSizeLimit<File.size)
      {
       limitSize = Math.floor(FileSizeLimit/1024);
       msg = File.name + " 파일이 용량제한 (" + limitSize + " kbyte)을 초과했습니다.";
       return msg;
      }
     }
     TotalFileBytes += File.size;
    }
    if( msg == "" )
    {
     ProgressBarFile.setProgress(0, 0);
     ProgressBarFile.label = "";
 
     ProgressBarTotal.setProgress(0, 0);
     ProgressBarTotal.label = "";
     File = UploadFiles.fileList[index];
     CurrentFileName = File.name;
     CurrentFileSize = File.size;
     CurrentFileBytesLoadedOld = 0;
     CurrentFileBytesLoaded = 0;
     sending();
     is_flag = false;
     msg = "true";
    }
    return msg;
   }
   
   private function sending():void
   {
    var Request:URLRequest = new URLRequest;
    Request.url = UploadPath;
    File = UploadFiles.fileList[index];
    File.addEventListener(ProgressEvent.PROGRESS, ProgressBarFileRun);
    File.addEventListener(Event.COMPLETE, onComplete);
    File.upload(Request, "file");
   }
   private function ProgressBarFileRun(event:ProgressEvent):void
   {
    NowSending = true;
    
    // Total 프로그래스바 계산
    CurrentFileBytesLoadedOld = CurrentFileBytesLoaded;
    CurrentFileBytesLoaded = event.bytesLoaded;
    TotalFileBytesLoaded += (CurrentFileBytesLoaded-CurrentFileBytesLoadedOld);
    // 파일 하나 업로드 프로그래스바
    ProgressBarFile.setProgress(event.bytesLoaded, event.bytesTotal);
    ProgressBarFile.label = CurrentFileName + " " + Math.floor((event.bytesLoaded/event.bytesTotal)*100) + "%" ;
    // 파일 전체 업로드 프로그래스바
    ProgressBarTotal.setProgress(TotalFileBytesLoaded, TotalFileBytes);
    ProgressBarTotal.label = "TOTAL " + Math.floor((TotalFileBytesLoaded/TotalFileBytes)*100) + "%";
    // 로그 기록
    //log.text += "[" + CurrentFileName + "]\n" + event.bytesLoaded + "/" +  event.bytesTotal + "\n" + TotalFileBytesLoaded + "/" + TotalFileBytes + "\n\n";
    if( event.bytesLoaded == event.bytesTotal && UploadFiles.fileList.length-1 != index )
    {
     File = UploadFiles.fileList[++index];
     CurrentFileName = File.name;
     CurrentFileSize = File.size;
     CurrentFileBytesLoadedOld = 0;
     CurrentFileBytesLoaded = 0;
     sending();
    }
    
    if( TotalFileBytesLoaded==TotalFileBytes)
    {
     ExternalInterface.call(CompeleteFunction);
    }
   }
  ]]>
 </mx:Script>
 <mx:ProgressBar id="ProgressBarTotal" x="0" y="0" width="100%" height="15" themeColor="#68bbff" mode="manual" labelPlacement="center" label="TOTAL"/>
 <mx:ProgressBar id="ProgressBarFile" x="0" y="15" width="100%" height="15" themeColor="#ccf491" mode="manual" labelPlacement="center" label="FILE" alpha="1.0"/>
</mx:Application>

19.gif

댓글 전체

지블로그에 삽입되어있는 멀티업로더 프로그램이 플랙스(Flex) 로 제작이 되었습니다.
그 플랙스 원본 코드를 참고하시라고 올려둔겁니다. ^^;
이 소스 관련된 자바스크립트 소스도 알수 잇을가요?

ExternalInterface.addCallback("path", setUploadPath);
    ExternalInterface.addCallback("list_limit", setUploadListLimit);
    ExternalInterface.addCallback("size_limit", setUploadSizeLimit);
    ExternalInterface.addCallback("select", OpenWindowFileSelectAfter);
    ExternalInterface.addCallback("browse", OpenWindowFileSelect);
    ExternalInterface.addCallback("send", UploadFilesSend);
    ExternalInterface.addCallback("get_list", getFileList);
    ExternalInterface.addCallback("get_size", getFileSize);
    ExternalInterface.addCallback("after_upload", setCompleteFunction);

이게 자바스크립트랑 연관 잇는거 같은데.. 공부하느라 아직 모르는게 많네요..
소스에디터실행시키고 위 게시글 소스 복사한 다음, 소스에디터에 붙여넣기 한 후 저장해서 FTP로 올리면 되지 않을까요..

업로드하는 디렉토리는 알고 있지 않아요;;
전체 5

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT