ファイルのアップロード

FileReferenceクラスのbrowse()メソッドは非同期で動くらしく、browse()メソッドの呼び出し直後に選ばれたファイル名を取得しようとしてもできなかったり、upload()を呼び出してもアップロードされなかった。

// 試し中なので変数のスコープが適当
on(click) {
    _global.fileRef = new flash.net.FileReference();
    if (_global.fileRef.browse()) {
        // ↓browse()直後に呼び出してもアップロードされない
        _global.fileRef.upload('http://localhost:8080/FlashUpload/upload', 'POST');
    } else {
        // ファイルが選ばれなかった
    }
}

考えてみればそうか。選んだ瞬間ファイルがアップロードされてしまっては困る事もある。そしてもうひとつ重要な事が。

アップロードされてきたファイルを受信するサーバサイドのプログラム。これCommons FileUpload使うと必ずエラーが起きるんですけど(^^;。あとファイルを選択した状態で何度かアップロードボタンを押していると、なんにもアップロードされないんだけど、リクエストは飛ぶって現象が頻発してます。リクエストの中身を直接読み込んでやると、バウンダリまでは来てるけど、それ以降が飛んでこない。

ちょっとこの機能を使いこなすには調査の時間が必要そうです。