ファイルアップロード
AIRで試してみた。
AIRでファイル選択のダイアログを出すのは、以下のような書き方でいける。
var file:File = File.desktopDirectory; file.browseForOpen("ファイルオープン");
Flexだと、以下のような書き方だった。
var fileRef:FileReferenceList = new FileReferenceList(); fileRef.browse();
後は、ファイルが選択されたときのイベントを登録して、ごにょごにょとやればOK。
以下の方法で、サーバーサイドにbyte[]データとして渡せた。
AIRだとできるみたい。
var file:File = File.desktopDirectory; file.addEventListener(Event.SELECT,selectHandler); file.browseForOpen("ファイルオープン"); function selectHandler(event:Event):void{ var file:File = File(event.target); var stream:FileStream = new FileStream(); stream.open(file,FileMode.READ); var bytes:ByteArray = new ByteArray(); stream.readBytes(bytes,0,file.size); //リモートオブジェクトのupload(byte[] bytes) メソッド呼び出し srv.upload(bytes); stream.close(); }
追記
これだと、ローカルでByteArrayにコピーすることになるから、サイズの大きいファイルをアップロードするとローカルでのメモリ消費量が増えることになるなぁ。
やっぱりFileReference#upload使う方がいいのかな。サーバー側でUploadを受け付けるServletなどを用意しておけばいいだけなんだけどね。