当我使用FileReference类的Download方法时,在桌面和安卓上一切正常,但在iOS上出现错误。
代码如下:
var req = new URLRequest(url);
var localRef:FileReference = new FileReference();
localRef.download(req);在iOS上,我收到一个警报:
下载错误
不支持文件下载。
我已经尝试了NavigateToUrl(),它要求将文件保存在Dropbox或其他应用程序中。
如何修复此错误?
发布于 2014-10-03 23:57:28
你不应该在移动设备上使用FileReference (或者AIR,一般来说,尽管它会在桌面上打开加载/保存对话框,所以可能会有一些用处)。相反,您应该使用File和FileStream,这使您能够更好地控制文件系统。
在这种情况下,您可以尝试使用File.download()并将其保存到File.applicationStorageDirectory,但我不知道这是否会有什么不同,因为它扩展了FileReference。
我通常使用URLStream而不是URLLoader。它使您能够访问正在下载的文件的原始字节,然后使用File和FileStream
所以就像这样(这在我的脑海中还没有测试过,尽管我以前用过类似的方法):
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的文件,这是大多数设备无法处理的。
https://stackoverflow.com/questions/26176102
复制相似问题