空中應用程序是否可以開始下載,暫停並在此之後恢復?暫停並恢復下載flex?
我想下載很大的文件(1-3Gb),我需要的,如果連接中斷,則該用戶試圖下載它從最後位置啓動該文件的下一次肯定。
任何想法和源代碼示例將不勝感激。
空中應用程序是否可以開始下載,暫停並在此之後恢復?暫停並恢復下載flex?
我想下載很大的文件(1-3Gb),我需要的,如果連接中斷,則該用戶試圖下載它從最後位置啓動該文件的下一次肯定。
任何想法和源代碼示例將不勝感激。
是的,你會想要使用URLStream class(URLLoader不支持部分下載)和HTTP Range header。請注意,Range頭部有一些繁重的安全限制,但在AIR應用程序中應該沒問題。這裏有一些未經測試的代碼應該給你一個總體思路。
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);
}
如果你是針對移動設備,也許你應該看看這個原生擴展:http://myappsnippet.com/download-manager-air-native-extension/它支持多段塊同時斷點續傳下載,以儘可能快地下載文件。