플래쉬8애서 새로 추가된 기능인 FileReference을 사용해 보았습니다.
멀티 업로드를 위한 FileReferenceList도 있죠... 저의 경우엔 파일을 하나씩만 올리도록 FileReference을 사용하였습니다. FileReference을 사용해 보면 기존의 샘플파일을 보면 파일을 선택하면 곧바로 업로드가 시작이 되는 샘플이 있죠 그러나.......!! 대부분이 아마 업로드 버튼을 따로 두고 버튼을 클릭했을때 아마 업로드가 되도록 하는 ui가 나오겠죠...^^;;; 그래서 저도 업로드 버튼을 누를시에 작동이 되도록 하는걸 만들기위해서 외국블로그나 국내 커뮤니티를 뒤지다가 운좋게 소스를 구했습니다. 헌데 이게 대채 어디서 받았는지가 기억이 나질 않네요...^^;;;;
그래서 원본이 어디서 얻었는지는 알려드릴 길은 없습니다...-0- ;;;;
=======================================================================================================
init();
///////파일 업로드
import flash.net.FileReference;
var listener1:Object = new Object();
var listener2:Object = new Object();
var myFile:FileReference;
var allTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)";
imageTypes.extension = "*.jpg; *.jpeg; *.gif; *.png";
allTypes.push(imageTypes);
listener1.onSelect = function(file:FileReference):Void {
for (var a in file) {
trace(a+" :"+file[a]);
}
myFile = file;
filename_txt.text = file.name;
//기존 샘플들과는 다르게 업로드를 시키지 않습니다.
//리스너를 두개를 생성해서 하나에는 찾기에서 선택까지만 리스너를 등록합니다.다른 하나에는 에러나 업로드 관련된것을 등록합니다.
};
listener1.onCancel = function():Void {
trace("onCancel");
};
listener2.onOpen = function(file:FileReference):Void {
trace("onOpen: "+file.name);
};
listener2.onComplete = function(file:FileReference):Void {
trace("onComplete");
showIMG();
};
listener2.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("bytesLoaded= "+bytesLoaded+" bytesTotal= "+bytesTotal);
pgSending.setProgress(bytesLoaded, bytesTotal);
pgSending.label = Math.round(bytesLoaded/1024)+"KB";
};
listener2.onHTTPError = function(file:FileReference, httpError:Number):Void {
trace("onHTTPError: "+file.name+" httpError: "+httpError);
};
listener2.onIOError = function(file:FileReference):Void {
trace("onIOError: "+file.name);
};
listener2.onSecurityError = function(file:FileReference, errorString:String):Void {
trace("onSecurityError: "+file.name+" errorString: "+errorString);
};
//FileReference를 하나더 만들어서 기존 선택한 녀석을 새로 생성한 변수에 담아놓습니다.
//그리고 버튼을 누르면 담아놓은 변수를 이용해서 업로드를 시작하도록 합니다.
var fileRef:FileReference = new FileReference();
fileRef.addListener(listener1);
button.onRelease = function() {
fileRef.browse(allTypes);
};
button2.onRelease = function() {
trace("button2");
var ref:FileReference = myFile;
ref.addListener(listener2);
ref.upload("getFile.php");
};
가장 중요한 부분은 색을 다르게 넣어준 부분입니다.
멀티 업로드에서는 좀더 복잡해 지지만 키가 되는건 똑같다고 보시면 됩니다.
멀티 업로드를 위한 FileReferenceList도 있죠... 저의 경우엔 파일을 하나씩만 올리도록 FileReference을 사용하였습니다. FileReference을 사용해 보면 기존의 샘플파일을 보면 파일을 선택하면 곧바로 업로드가 시작이 되는 샘플이 있죠 그러나.......!! 대부분이 아마 업로드 버튼을 따로 두고 버튼을 클릭했을때 아마 업로드가 되도록 하는 ui가 나오겠죠...^^;;; 그래서 저도 업로드 버튼을 누를시에 작동이 되도록 하는걸 만들기위해서 외국블로그나 국내 커뮤니티를 뒤지다가 운좋게 소스를 구했습니다. 헌데 이게 대채 어디서 받았는지가 기억이 나질 않네요...^^;;;;
그래서 원본이 어디서 얻었는지는 알려드릴 길은 없습니다...-0- ;;;;
=======================================================================================================
init();
///////파일 업로드
import flash.net.FileReference;
var listener1:Object = new Object();
var listener2:Object = new Object();
var myFile:FileReference;
var allTypes:Array = new Array();
var imageTypes:Object = new Object();
imageTypes.description = "Images (*.jpg, *.jpeg, *.gif, *.png)";
imageTypes.extension = "*.jpg; *.jpeg; *.gif; *.png";
allTypes.push(imageTypes);
listener1.onSelect = function(file:FileReference):Void {
for (var a in file) {
trace(a+" :"+file[a]);
}
myFile = file;
filename_txt.text = file.name;
//기존 샘플들과는 다르게 업로드를 시키지 않습니다.
//리스너를 두개를 생성해서 하나에는 찾기에서 선택까지만 리스너를 등록합니다.다른 하나에는 에러나 업로드 관련된것을 등록합니다.
};
listener1.onCancel = function():Void {
trace("onCancel");
};
listener2.onOpen = function(file:FileReference):Void {
trace("onOpen: "+file.name);
};
listener2.onComplete = function(file:FileReference):Void {
trace("onComplete");
showIMG();
};
listener2.onProgress = function(file:FileReference, bytesLoaded:Number, bytesTotal:Number):Void {
trace("bytesLoaded= "+bytesLoaded+" bytesTotal= "+bytesTotal);
pgSending.setProgress(bytesLoaded, bytesTotal);
pgSending.label = Math.round(bytesLoaded/1024)+"KB";
};
listener2.onHTTPError = function(file:FileReference, httpError:Number):Void {
trace("onHTTPError: "+file.name+" httpError: "+httpError);
};
listener2.onIOError = function(file:FileReference):Void {
trace("onIOError: "+file.name);
};
listener2.onSecurityError = function(file:FileReference, errorString:String):Void {
trace("onSecurityError: "+file.name+" errorString: "+errorString);
};
//FileReference를 하나더 만들어서 기존 선택한 녀석을 새로 생성한 변수에 담아놓습니다.
//그리고 버튼을 누르면 담아놓은 변수를 이용해서 업로드를 시작하도록 합니다.
var fileRef:FileReference = new FileReference();
fileRef.addListener(listener1);
button.onRelease = function() {
fileRef.browse(allTypes);
};
button2.onRelease = function() {
trace("button2");
var ref:FileReference = myFile;
ref.addListener(listener2);
ref.upload("getFile.php");
};
가장 중요한 부분은 색을 다르게 넣어준 부분입니다.
멀티 업로드에서는 좀더 복잡해 지지만 키가 되는건 똑같다고 보시면 됩니다.


::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::
전체 소스를 구할수는 없을까요? 부분 action script로는 아직 잘 몰라서요