package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.net.URLRequest;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
public class FileUpload extends Sprite {
/**
*셋팅 되어 있는 서버 경로...
* !! 주의 !! 서버 폴더의 퍼미션 설정을 반드시 할 것!. write 가 체크 되어 있어야 합니다.
* 방법 : ftp -> remote site -> 원하는 폴더 선택 우클릭 -> 퍼미션 설정 모드.
*/
public static const SERVER_PATH:String="";
/**
* 파일 레퍼런스 변수.
* myType -> brows 에서는 타입을 배열로 받기 때문에 img, text 를 따로 생성하여 myType에담아야 한다.
*/
private var fileRef:FileReference;
private var myType:Array=[];
/**
* 초기화 부분.
*/
public function FileUpload() {
super();
// 초기화
this.defaultSetting();
this.initLayout();
this.initEvents();
// 업로드 시작을 기다리는 리스너
stage.addEventListener(MouseEvent.CLICK,onClick);
}
private function defaultSetting():void {
if (SERVER_PATH=="") {
trace("SERVER_PATH 를 설정해주세요");
}
this.fileRef=new FileReference ;
// 업로드 타입
var imgType:FileFilter=new FileFilter("Images (*.jpg, *.jpeg, *.gif)","*.jpg; *.jpeg; *.gif");
var txtType:FileFilter=new FileFilter("Texts (*.txt, *.hwp)","*.txt; *.hwp");
this.myType.push(imgType);
this.myType.push(txtType);
}
private function initLayout():void {
}
private function initEvents():void {
this.fileRef.addEventListener(Event.SELECT,onSelect);
this.fileRef.addEventListener(Event.COMPLETE,onComplete);
}
/**
*
* @ 파일을 선택 했을 경우 처리 메소드.
* 변수를 추가하여 전송할 수도 있고, 컨텐츠 타입, 전송방법( GET, POST ) 등을 설정한다.
* 다수의 파일을 한번에 처리하고자 할 경우 FileReference -> FileReferenceList 로 한다.
*
* 파일이 없는 경우 FileReference 말고 URLLoader 로 처리하도록 변경해야 함.
*
*/
private function onSelect(e:Event):void {
// 변수 추가하는 방법 ----------------------------------------------
var param:URLVariables=new URLVariables ;
param.date=new Date ;
param.id="1234-5678-90";
// URLRequest 설정 -----------------------------------------------
var url:String=FileUpload.SERVER_PATH+"/test/fileRef.php";
var req:URLRequest=new URLRequest(url);
req.method=URLRequestMethod.POST;
req.contentType="multipart/form-data";
req.data=param;
try {
this.fileRef.upload(req);
} catch (e:Error) {
trace("Unable to Upload this file");
}
}
// 업로드 완료 --------------------------------
private function onComplete(e:Event):void {
var name:String=e.target as FileReference.name;
trace(name+" Upload Complete");
}
// 스테이지를 클릭 했을 경우 셀렉트 브라우저 오픈 ---------------
private function onClick(e:MouseEvent):void {
try {
fileRef.browse(this.myType);
} catch (e:Error) {
trace(e.getStackTrace());
}
}
}
}
[출처] 서버에 File Upload 하기|작성자 위니
댓글 없음:
댓글 쓰기