- FileReference클래스는 사용자 컴퓨터와 서버 사이에서 파일을 업로드, 다운로드 할 수 있는 방법을 제공
한다. 우리가 흔히 파일을 받아서 저장하는 기능을 플래시에서도 구현할 수 있다는 것이다.
FileReference도 일종의 PC와 서버사이의 통신을 하는 것에 속하므로 flash.net 패키지에 포함된다.
FileReference에도 여러가지 메소드들이 있는데 그중 browser()라는 메소드를 보면,

업로드할 파일을 선택할 수 있는 운영체제 대화 상자를 뜨게하는 메소드이다. 이 메소드는 한번에 하나만
수행할 수 있다. 만약 FileReference.browser(); 하게되면 이런 창이 뜨는 것이다.

여기에서 매개변수로 browse(typeFilter:Array = null)typeFilter라는 배열객체로 들어가는데
파일을 필터링하는데 사용되는 인스턴스 배열이라고 한다. 파일을 필터링하는 것은 사용자가 선택할
수 없고 지정되지 않은 확장명이라던지 파일형에 관한 필터링을 하는 것을 말한다.
예를 들어 FileFilter는 이런식이다.
[code as3]
var imageFilter:FileFilter = new FileFilter( "Image", "*.jpg, *.gif, *.png" );
var myfr:FileReference = new FileRefence();
myfr.browser( [imageFilter] );
[/code]
* 업로드와 다운로드는 Flash Player에서 파일의 크기를 제한하지 않지만, 공식적으로 100MB이하의
업로드 또는 다운로드를 지원한다고 한다. upload()와 download()메소드는 비차단 방식으로 만일
FileReference 객체의 범위를 벗어나는 경우 즉 업로드와 다운로드 파일전송이 완료되지 않은 상태에서
범위를 벗어나면 취소가 된다.
업로드는 upload(request:URLRequest, uploadDataFieldName:String = "Filedata", testUpload:Boolean = false)이렇다.
- request는 통신객체로 HTTP post 형식의 호출을 통한 url이 포함되어 있어야 한다.
- uploadDataFieldName은 파일 데이터 앞에오는 필드이름이다. null이면 안된다.
- testUpload는 Boolean값으로 true인 경우, 파일크기가 10KB보다 크면 FlashPlayer는 내용의 길이가 0인
테스트 파일 업로드 POST를 한다.
다운로드는 download(request:URLRequest, defaultFileName:String = null)이렇다.
- request는 로컬 컴퓨터로부터 다운로드할 파일의 URL이 포함되어야 한다. 이 매개변수가 null일 경우 예외
가 발생하므로 반드시 써줘야한다. 또 일반 브라우저에서 URL문자열의 길이가 제한이 있으므로 256보다 긴
경우는 다운로드를 실패할 수도 있다.
- default는 다운로드할 파일의 기본 파일 이름으로 / | : * ? " < > 등 특수문자는 포함될 수 없다.
download()메서드는 운영체제 대화상자를 열어서 파일을 선택하고 저장할 위치를 선택하고 다운로드를 하겠다는 버튼을 누르면 서버에서 바로 다운로드를 실시하게 된다. 이 과정에서 다운로드를 하면서 파일을 선
택하여 저장하는 과정이 있는데 이 과정에서 save()메소드가 그 중요한 역할을 한다.
저장 메서드는 save(data:*, defaultFileName:String = null) 이런값이 있다.
- data는 저장할 데이터로 이 값도 null이 되면 ArgumentError 예외를 발생시킨다. 이 매개변수는 다양한 형
태에 따라 다르게 처리 되는데 그 다양한 형식을 보면,
값이 String인 경우 UTF-8 텍스트 파일로 저장되어지고 XML인 경우는 텍스트 파일에 XML형식으로 유지해
주고, ByteArray객체인 경우라도 그대로 기록해주고 그외의 값인 경우는 save()메서드가 toStrng()메서드를
호출하여 데이터를 문자열로 변환하여 텍스트 파일에 저장한다. 이작업이 실패가 되면 예외가 발생한다.
댓글 없음:
댓글 쓰기