>

2009年3月27日金曜日

actionscriptでファイルをmultipart送信

AIRでマルチパートで任意のバイナリデータを送る方法を調べていたんだけどFlexBuilderのヘルプドキュメントにはFileRefferenceクラスを使用する方法しか書かれていない。

プログラムで生成した任意のバイナリデータをマルチパートで送信するには自分で何らかのクラスを作る必要があるっぽいです。

ググってみたところ下記で公開されているMultipartLoaderクラスがシンプルで使いやすそう。
http://code.google.com/p/multipart-loader/

使い方はダウンロードしたソースのコメント部に分かりやすいサンプルコードが書かれています。

実際に使ってみたところそのまま使えそうだが、このリクエストをStrutsでFormFileとして受け取る場合MultipartRequest.asの45行目を以下のように変更してダブルクォートを外してやらないと認識してくれないので注意。

headers.writeMultiByte("Content-Type: multipart/form-data; boundary=\"" + this._boundary + "\"" + EOL,"utf-8");

headers.writeMultiByte("Content-Type: multipart/form-data; boundary=" + this._boundary + EOL,"utf-8");

あと、今のところレスポンスがうまく受け取れない。sandbox関連の設定が不足しているのだろうか。