apache-flex - 在 Flex 中暂停和恢复下载?

标签 apache-flex actionscript-3 air download

是否可以在空中应用程序中开始下载、暂停下载,然后再恢复下载?

我想下载非常大的文件(1-3Gb),并且我需要确定连接是否中断,然后下次用户尝试下载文件时,它会从最后一个位置开始。

任何想法和源代码示例将不胜感激。

最佳答案

是的,您需要使用 URLStream class (URLLoader 不支持部分下载)和 HTTP Range header 。请注意,Range header 存在一些繁重的安全限制,但在 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);
}

关于apache-flex - 在 Flex 中暂停和恢复下载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2044649/

相关文章:

java - 更适合我的情况的技术 - Adob​​e/AIR/Flex 还是 Google SDK?

apache-flex - Adobe AIR 中的多个窗口

javascript - E4X : Assigning to root node

apache-flex - Flex数据网格: Change value based on another value?

actionscript-3 - 为什么这个属性/函数名称冲突会在 AS3 中编译?

php - 如何通过网络传送音乐(渐进/下载)而不暴露 mp3 的 URL(即使在 webkit 浏览器中)

apache-flex - 弹性 : Saving mx:image with applied effects

actionscript-3 - AIR企业部署和更新

actionscript-3 - 从flex3中的自定义按钮调用放大和缩小上下文菜单

apache-flex - 富 UI 桌面应用程序采用什么技术?