簡體   English   中英

iOS上的Adobe air-FileReference下載錯誤

[英]Adobe air on iOS - FileReference Download Error

當我使用FileReference類的Download方法時,在台式機和Android上一切正常,但是在iOS上卻出現錯誤。

這是代碼:

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

在iOS上,我收到警報:

下載錯誤
不支持文件下載。

我已經嘗試過NavigateToUrl(),它要求將文件保存在Dropbox或其他應用程序中。

如何解決此錯誤?

您不應該在移動設備(或AIR,通常使用AIR)上使用FileReference ,盡管它確實會在桌面上打開“加載/保存”對話框,以便在那里可以有一些用途。 相反,您應該使用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的文件,這是大多數設備無法處理的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM