클라이언트 PC에 있는 파일을 서버에 전송하는 방법은 두가지가 있다. 한개의 파일을 전송하는 것과 다량의 파일을 전송하는 방법이 있다. 한개의 파일을 전송하려면 FileReference()를 사용하고, 다량의 파일을 전송하고 싶으면 FileReferenceList() 클래스를 사용한다. 둘이 틀별한 차이점은 없고 FileReferenceList()는 FileReference()가 배열 형태로 포함되어 있다는 점만 다르다.

서버에 파일을 전송하기 위해 우선 유저는 파일을 검색하는 다이얼로그 창을 열어야 한다. 이는 각각에 browse()라는 메서드로 정의 되어있다. browse()가 호출되면 파일을 선택하는 다이얼로그 창이 팝업되고FileReference()는 파일이 한개만 선택되고 FileReferenceList()는 여러개의 파일을 선택할 수 있다. 물론 선택이 끝나면 Event.SELECT가 발생한다. 거의 브라우저에서 자동 차단되지만 다이얼로그창이 활성화 된상태에서 또 팝업하려고 시도 한다면 IllegalOperationError이라는 에러가 발생한다. 따라서 browse() 호출시 try catch로 에러를 방지해야 한다.

파일 선택 후 부터 FileReference()와 FileReferenceList()는 약간의 처리방식이 다르다.
FileReference()의 경우 파일이 한개 이므로 바로 upload()를 실행하면 된다.
하지만 FileReferenceList()는 FileReferenceList.fileList 안에 배열로 설정되어 있으므로 FileReferenceList.fileList의 길이 만큼 반복하면서 각각의 원소에 upload()를 실행해야 한다.

이러한 FileReference()와 FileReferenceList()에 의해서 불러온 사용자 파일의  BytesArray에 직접 접근못하는 것이 좀 아쉽지만 파일정보를 전혀 못 읽어오는 것은 아니다.

파일 레퍼런스에 불려진 파일의 정보를 읽는 파일레퍼런스의 속성은 다음과 같다.
creationDate : Date
로컬 디스크의 파일을 만든 날짜입니다. 
   
creator : String
파일의 Macintosh 작성자 유형입니다. 

modificationDate : Date
로컬 디스크 파일의 가장 최근 수정 날짜입니다.  
   
name : String
로컬 디스크에 있는 파일의 이름입니다.  
      
size : uint
로컬 디스크에 있는 파일의 크기(바이트)입니다. 
   
type : String
파일 유형입니다. 
Posted by 버터백통
사용자의 호출에 의해 서버에서 전송하는 파일을 저장 다이얼로그에 의해 위치와 이름을 확인하고 저장 하고 싶을 때는 FileReference()download()메서드를 사용한다.

FileReference() 객체는 파일을 저장하거나 서버에 저장할 때  그림과 같이 사용자가 다이얼로그창을 이용하여
클라이언트에 저장 또는 서버에 업로드 등을 지원하는 클래스이다.


FileReference를 사용하여 URLRequest로 접근할 때는 HTTP또는 HTTPS일때만 접근이 가능하다.
서버쪽에서 보안에 개념이 있다면 보통은 HTTPS를 선호하게 될 것이지만 우리는 크게 신경쓰지 않아도 된다. HTTP나 HTTPS는 AS3에서는 사용법이 별차이점이 없기 때문이다.

다이얼로그 창에서 사용자의 선택에따른 이벤트는 Event.SELECTEvent.CANCEL가 발생한다 각각의 역할에 맞는 함수를 구현해 두면 되고 저장시 진행사항을 보도 싶으면 ProgressEvent.PROGRESS를 추가로 더 등록하면 된다.
Posted by 버터백통
HTML에서 간간히 SWF파일에 변수를 설정해 주어야 하는경우가 자주 발생한다. user id라던가 기본 유저정보는 HTML에서 설정하여 초기에 SWF에 보내지게 되는데 HTML에 파라미터 "FlashVars"라는 곳을 찾아 보내고자
하는 변수명과 값을 URL-encoded방식으로 설정하면 된다.
과거 SWF에서 이 값이 저장 되는 곳은 _root였다 AS3환경에서는 root.loaderInfo.parameters에 저장되므로
root.loaderInfo.parameters으로 접근하여 값을 꺼내서 사용하면 된다.

컴파일시에 HTML에서는 IE체크를 하여 두가지로 플래시 파라미터를 설정하는데 양쪽 모두 선언해 주던가 공통 실행부를 찾아  FlashVars를 설정하면 된다.
Posted by 버터백통