いくつかの大きなバイナリ ファイルをダウンロードしてディスクに保存するアプリケーションがあります。一部のマシンでは正常に動作し、他のマシンでは時々ダウンロードが 99.9% 完了し、URLStream オブジェクトは Event.COMPLETE を起動しません。
これは、ここに表示される問題とほぼ同じです。
ファイルの読み込みが完了していないときに URLStream の完了イベントが送出されるのはなぜですか?
回答の1つで説明されている「キャッシュバスト」メソッドを使用してみましたが、まだサイコロはありません。
どんな助けでも大歓迎です。
私がやろうとしていることを説明するのに役立つサンプルコードを次に示します。
var contentURL:String = "http://some-large-binary-file-in-amazon-s3.tar";
var stream:URLStream = new URLStream();
stream.addEventListener(Event.COMPLETE, function(e:Event):void{
//This should fire when the file is done downloading
//On some systems this fails to fire once in a while
//On other systems it never fails to fire
});
stream.addEventListener(ProgressEvent.PROGRESS, function(pe:ProgressEvent):void{
//Write the bytes available in the stream and save them to disk
//Note that a download will reach 100% complete in terms of total progress but the 'complete' event might still not fire.
});
var urlRequest:URLRequest = new URLRequest(contentURL);
//Here we might add some headers to the URL Request for resuming a file
//but they don't matter, the 'Event.COMPLETE' will fail to fire with our without
//these headers
addCustomHeaders( urlRequest );
stream.load( urlRequest );