ios - iOS 上的 Adob​​e air - FileReference 下载错误

标签 ios actionscript-3 air

当我使用 FileReference 类的 Download 方法时,在桌面和 Android 上一切正常,但在 iOS 上出现错误。

这是代码:

var req = new URLRequest(url);
var localRef:FileReference = new FileReference();
localRef.download(req);

在 iOS 上,我收到警报:

下载错误
不支持文件下载。

我已经尝试过 NavigateToUrl() 并要求将文件保存在 Dropbox 或其他应用程序中。

我该如何解决这个错误?

最佳答案

你不应该使用 FileReference在移动设备上(通常是 AIR,尽管它确实会在桌面上打开“加载/保存”对话框,因此在那里可以有一些用处)。您应该改用 FileFileStream ,这使您可以更好地控制文件系统。

在这种情况下,您可以尝试使用 File.download()并将其保存到 File.applicationStorageDirectory ,但我不知道它是否会有所不同,因为它扩展了 FileReference .

我通常做的是使用URLStream而不是 URLLoader .它使您可以访问正在下载的文件的原始字节,然后使用 FileFileStream
像这样的东西(尽管我过去曾使用过类似的东西,但这是未经测试的):

var urlStream:URLStream = new URLStream();
urlStream.addEventListener(Event.COMPLETE, completeHandler);
urlStream.load(new URLLoader('url');

function completeHandler(e:Event):void {
    var bytes:ByteArray = new ByteArray();
    urlStream.readBytes(bytes);

    var f:File = File.applicationStorageDirectory.resolvePath('filename');
    var fs:FileStream = new FileStream();
    fs.open(f, FileMode.WRITE);
    fs.writeBytes(bytes);
    fs.close();
}

现在,显然,您要考虑的还有很多(错误、进度等)。但是,这应该足以为您指明正确的方向。

可以使用这种方法创建一个完整的下载管理器(两年前我为一个 iOS 项目所做的),因为您可以随时保存到文件系统,而不是等到 Event.COMPLETE触发(使用 ProgressEvent.PROGRESS 事件)。这使您可以避免在内存中有 500MB 的文件,这是大多数设备无法处理的。

关于ios - iOS 上的 Adob​​e air - FileReference 下载错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26176102/

相关文章:

ios - 如何在 Xcode (swift) 中隐藏标签栏?

ios - UICollectionView didSelectItem 返回错误的索引路径

apache-flex - 如何阻止数据网格的第一行 itemRenderer 实例化/添加/初始化/等两次?

ios - iOS 上的参数错误 : Error #2015: Invalid BitmapData.

ios - 将 Adob​​e Air App 交付到 AppStore 失败

iphone - 使用 UIView 动画处理一系列动画的最佳方式

ios - Swift/cornerRadius 和 masksToBounds 让 UIImageView 消失

actionscript-3 - 从字符串实例化类

android - 如何使用 Adob​​e air - AS3 在静音模式下检测设备并与之交互

ios - iOS 上的 Flash/AIR 舞台视频 - 这可能吗?表现如何?