首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Adobe air on iOS - FileReference下载错误

Adobe air on iOS - FileReference下载错误
EN

Stack Overflow用户
提问于 2014-10-03 16:59:21
回答 1查看 366关注 0票数 1

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

代码如下:

代码语言:javascript
复制
var req = new URLRequest(url);
var localRef:FileReference = new FileReference();
localRef.download(req);

在iOS上,我收到一个警报:

下载错误

不支持文件下载。

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

如何修复此错误?

EN

回答 1

Stack Overflow用户

发布于 2014-10-03 23:57:28

你不应该在移动设备上使用FileReference (或者AIR,一般来说,尽管它会在桌面上打开加载/保存对话框,所以可能会有一些用处)。相反,您应该使用FileFileStream,这使您能够更好地控制文件系统。

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

我通常使用URLStream而不是URLLoader。它使您能够访问正在下载的文件的原始字节,然后使用FileFileStream

所以就像这样(这在我的脑海中还没有测试过,尽管我以前用过类似的方法):

代码语言:javascript
复制
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的文件,这是大多数设备无法处理的。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26176102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档