0

AS 3.0 でクライアント マシンのアップロード速度をテストする必要があります。そこで、swf に埋め込む画像を、ユーザーの操作なしでサーバーにアップロードすることを考えました。これを行う方法について考えがありますか?

4

2 に答える 2

1

最も簡単な方法は、ポスト リクエストで任意のデータをバイナリとして送信することです。ただし、アップロードはサーバー側の IO も必要とするため、別のことです。

サーバー側のオプションや要件が何であるかは明確ではありません。HTML フォームの動作を模倣する必要がありますか (つまり、マルチパート フォームのデータ ヘッダーを送信する必要がありますか?)、それとも content-type: application/octet-stream をそのまま使用できますか? 最初は FileReference を介してのみ実行できるか、特定の要求に応答してポリシー ファイルを送信するようにサーバーにパッチを適用し、ソケットを使用して独自に HTTP プロトコルを実装する必要があるため、これは異なります。プレーン バイナリ データの送信 (2 番目のオプション) は実装が簡単で制限が少ないですが、アップロードされたデータを保存するためにサーバーで必要な IO を自分で管理する必要があります。

FileReference の動作を自動的にテストすることはできません。これは、ユーザーがクリックする必要があり、クリック イベントに応答してデータを送信するだけであるためです。

于 2012-02-26T14:11:34.033 に答える
0

こんにちは私は画像なしでこれを行うための最良の方法を見つけました。まず、バイト配列を作成しました。

private var _byteArray:ByteArray = new ByteArray();
for(var i:int = 0; i < 200 * 1024;i++)
{
  _byteArray.writeByte(1);
}

そして、urlloaderとurlrequestを使用してその200KBバイトアレイをサーバーに送信します

uploadURL = new URLRequest();
uploadURL.url = "upload.php";
uploadURL.contentType = 'application/octet-stream';
uploadURL.method = URLRequestMethod.POST;
uploadURL.data = _byteArray;
urlLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, completeHandler);
urlLoader.load(uploadURL);

protected function completeHandler(event:Event):void
{
   trace("Upload Complete");
}
于 2012-02-27T17:48:37.923 に答える