AS3のFileReference.postData的なもの
以前書いたFileReference.postDataのAS3版を探していたらちゃんとありました。リファレンスでは見つけられなくて野中さんのFileReference.onUploadCompleteDataイベントで発見しました。ありがとうございます。
URLLoader.dataなどと違ってflash.events.DataEvent.UPLOAD_COMPLETE_DATA というイベントに含められて渡されるようです。
以下、DataEventの詳細はLiveDocsより引用します。
http://livedocs.adobe.com/flash/9.0_jp/ActionScriptLangRefV3/flash/net/FileReference.html#event:uploadCompleteData
プロパティ 値 bubbles
false
cancelable
false
は、キャンセルするデフォルトの動作がないことを示します。currentTarget
イベントリスナーで Event オブジェクトをアクティブに処理しているオブジェクトです。 data
ファイルのアップロードが正常に終了した後、サーバーから返される未処理のデータです。 target
アップロードが正常に終了した後、データを受信する FileReference オブジェクトです。
受け取ったDataEvent.dataプロパティはStringで、XMLなりJSONとして処理することができます。
import flash.events.DataEvent; import flash.net.FileReference; import flash.net.URLRequest; import com.adobe.serialization.json.JSON; var fileRef:FileReference = new FileReference(); fileRef.addEventListener( Event.SELECT, onSelectFile ); fileRef.addEventListener( DataEvent.UPLOAD_COMPLETE_DATA, onUploadData ); fileRef.browse(); function onSelectFile( e:Event ) { var url :URLRequest = new URLRequest("/example/api/path"); fileRef.upload( url ); } // JSONを受け取ってみる function onUploadData( e :DataEvent ) { trace( e.data ); // { "success": 1 } trace( JSON.decode( e.data ) ); // [Object Object] }