ここで 2 つの基本的な質問があると思います。
- フラッシュ経由でアップロードするローカル ファイルを選択する方法は?
- 複数のファイルを POST としてサーバーに送信するには?
#1の場合、 flash.net.FileReferenceを使用する必要があります。
#2の場合、フラッシュには組み込みの「マルチパート」ローダーはありません。これが必要なものであると確信しています。私が見つけた最高のものは、Eugene という天才開発者によるものです: http://blog.inspirit.ru/?p=198 . 個人的には IE8 と IE9 の onComplete ハンドラに問題がありましたが、これはうまく機能します。Eugene のせいではなく、IE のせいだと確信しています。HTTPStatusEvent イベントをリッスンして、次のように回避しました。
var ml:MultipartURLLoader = new MultipartURLLoader();
ml.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatusEvent);
ml.addVariable('Content-Type', "image/png");
ml.addFile(pngStream, filename, "file", "image/png");
ml.load('http://...');
function onHTTPStatusEvent( event: HTTPStatusEvent ){
if(stat == 0 || (stat >= 200 && stat < 205)){
//upload success
}else{
//some kinda error
}
}
(これは複数の addFiles(_); で動作するはずです)
標準イベントもリッスンしています。
ml.addEventListener(Event.COMPLETE, uploadComplete);
ml.addEventListener(ProgressEvent.PROGRESS, uploadProgress);
しかし、PROGRESS をまったく動作させることができず、COMPLETE は IE で起動しません... IE で動作する代替手段を知っている人はいますか? ユージーンのコードは今私のために働いていますが、「アップロード中...」の進行状況バーをそのまま追加できるとは思いません...それはクールです.