Der Download der AIR AS3-Datei ist beschädigt, wenn die Bandbreite niedrig ist

9

Ich verwende eine Downloader-Klasse, um große Dateien von einem IIS-Server auf WS2012 zu erhalten und den Download-Fortschritt zu verarbeiten.

Es funktioniert gut, wenn jedoch die Bandbreite des Clients zu stark gesättigt ist, werden Progress-Ereignisse nicht mehr ausgelöst und nach einer bestimmten Zeit stoppt der Download (das Complete-Ereignis scheint ausgelöst zu werden), obwohl der Download nicht abgeschlossen wurde den Client mit einer beschädigten Datei belassen.

Ich konnte nicht herausfinden, wie ich das lösen soll oder welche Strategie ich für dieses Problem anwenden sollte (den Download beenden und einen Fehler anzeigen? Warte auf die Verfügbarkeit der Bandbreite, um mein nächstes Byte zu bekommen?)

Hier ist die Klasse Downloader.as

%Vor%     
Tom Solacroup 03.08.2015, 09:47
quelle

1 Antwort

1

Probieren Sie eine int-Variable aus, die die erwartete Dateigröße speichert.

Wenn der Event Complete jetzt ausgelöst wird, überprüfen Sie, ob Ihre [download] fileData.length gleich expected_FileSize ist.

Wenn weniger, versuche es erneut, bis alles gleich gut ist. Um die letzte Byteanzahl zu erhalten, verwenden Sie eine "Reichweitenanforderung" im Anforderungsheader. Es wird auch in diesem Link angezeigt, wenn das Ihnen hilft.

Etwas wie URLRequestHeader("range","bytes="+startPOS+"-"+endPOS); wobei startPOS filedata.length + 1 und endPos ist expected_FileSize amount.

    
VC.One 14.11.2015, 10:22
quelle