tera - ¿Pausa y reanuda la descarga en flex?
si pauso una descarga y apago la pc (2)
Sí, desearía usar la clase URLStream (URLLoader no admite descargas parciales) y el encabezado del rango HTTP . Tenga en cuenta que hay algunas restricciones de seguridad onerosas en el encabezado del rango, pero debería estar bien en una aplicación de AIR. Aquí hay un código no probado que debería darle la idea general.
private var _us:URLStream;
private var _buf:ByteArray;
private var _offs:uint;
private var _paused:Boolean;
private var _intervalId:uint;
...
private function init():void {
_buf = new ByteArray();
_offs = 0;
var ur:URLRequest = new URLRequest( ... uri ... );
_us = new URLStream();
_paused = false;
_intervalId = setInterval(500, partialLoad);
}
...
private function partialLoad():void {
var len:uint = _us.bytesAvailable;
_us.readBytes(_buf, _offs, len);
_offs += len;
if (_paused) {
_us.close();
clearInterval(_intervalId);
}
}
...
private function pause():void {
_paused = true;
}
...
private function resume():void {
var ur:URLRequest = new URLRequest(... uri ...);
ur.requestHeaders = [new URLRequestHeader("Range", "bytes=" + _offs + "-")];
_us.load(ur);
_paused = false;
_intervalId = setInterval(500, partialLoad);
}
¿Es posible en una aplicación aérea iniciar una descarga, pausarla y luego reanudarla?
Quiero descargar archivos muy grandes (1-3 Gb) y necesito estar seguro de que si la conexión se interrumpe, la próxima vez que el usuario intente descargar el archivo, comenzará desde la última posición.
Se apreciarán todas las ideas y ejemplos de código fuente.
Si se dirige a dispositivos móviles, tal vez debería echarle un vistazo a esta extensión nativa: http://myappsnippet.com/download-manager-air-native-extension/. Es compatible con descargas reanudables simultáneas con trozos de secciones múltiples para descargar archivos como lo más rápido posible.