gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 18:13:21 24 4
gpt4 key购买 nike

当我使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com