플랙스 멀티 업로드 소스 정보
플랙스 멀티 업로드 소스본문
지블로그에서 사용된 플랙스(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>
<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>
댓글 전체
이게 무엇에 써야하는 물건이지??
어느 부분에 어떻게 처방해야 하는지 알려 주세요..
어느 부분에 어떻게 처방해야 하는지 알려 주세요..
지블로그에 삽입되어있는 멀티업로더 프로그램이 플랙스(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);
이게 자바스크립트랑 연관 잇는거 같은데.. 공부하느라 아직 모르는게 많네요..
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로 올리면 되지 않을까요..
업로드하는 디렉토리는 알고 있지 않아요;;
업로드하는 디렉토리는 알고 있지 않아요;;