multipart/form-data
AIRでDnDしてTwitterのICONを変更するアプリ、が動作するにはする所まで行きました。
でもねー…、AIRのクラスライブラリが変なの。
普通のHTTPRequestで、multipart/form-dataでのファイル送信をサポートしていない訳ですよ…。
Flashから生まれたFlexですから、多分Flashの時のセキュリティ上の問題だとおもうんですが、FileReferenceクラスを使わないとファイルのアップロード(multipart/form-data)ができない。FileReferenceはファイルの選択にパス文字列をつめこめず、ダイアログを開くしかない設計なんですよね。
(Javascriptで参照ダイアログのプロパティがReadonlyなのと同じ意味だろう)
DnDでファイルを読み込める(ファイルハンドラがとれるので、Pathがちゃんと拾える)し、それをバイナリで開けるのに、それをUploadできないなんて酷い話ですよ。
もしかすると、書いてないだけでサポートするメソッドがあるのかもしれないんだけれど…見つけられない…。
しかたないので、ファイルをByteArrayで読み込んだ後で、Base64変換して、サーバー側のPerlCGIでそれを複合化した上でTwitterのサーバーに送信するなんて事をやりました
(まあ、Twitterの認証周りは、マトモにセッションをあつかわなければならないので、AIRの貧弱なHTTP UAでやるよりはよっぽど楽で良いのだけれど)
やりましたなんて言うと簡単なんだけれど、Base64のライブラリすらFlexのリファレンスにはクラスがなくて。
でも調べてみたら隠し?でmx.util.Base64Decoderなんてクラスがあったりして…AIRには謎が一杯です。