2012-02-26 19 views
0

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

答えて

1

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

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

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

+0

感謝。 これを行う方法が見つかりました。 –

+0

まず、埋め込み画像をバイト配列に変換します。 [convert-embed-image-to-bytearray](http://flexbuilderblog.wordpress.com/2010/01/25/convert-embed-image-to- bytearray /) そして、このバイト配列をサーバに送信します(変更あり)。 [upload-bitmapdata-snapshot-to-server-in-as3](http://www.quietless.com/キッチン/アップロード-bitmapdata-スナップショットからサーバーへのサーバー3)/ 時間を測定します。 –

0

こんにちは、私は外のイメージでこれを行うための最善の方法を見つけました。 まず、私はバイト配列、

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

を作成し、URLLoaderクラスを使用してサーバーにその200キロバイトのByteArrayのを送信し、応答のためのURLRequest

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"); 
} 
関連する問題