2012-04-13 4 views
1

Ich StageWebView mit zu mp4 & pdf-Dateien in meinem iPhone app (Adobe Air 3.2 für iOS, in Flash CS5.5)Wie speichere ich eine mit StageWebView geladene Datei (mp4 & pdf) in das iPhone-Verzeichnis?

Unten ist der Code, den ich mit der PDF-Datei laden (gleicher Code laden um eine mp4 Datei zu laden).

Ich muss die Datei auf dem iPhone speichern, damit das nächste Mal, wenn der Benutzer die App öffnet, ich überprüfe, ob die Datei existiert, ich lade sie mit FileStream.open (filePath, FileMode.READ); Gibt es eine Möglichkeit, eine mit StageWebView geladene Datei zu speichern? Wenn nicht, was ist der beste Weg, dies zu tun.

import flash.filesystem.FileMode; 
import flash.filesystem.FileStream; 
import flash.filesystem.File; 

var fPath:String = "http://www.bloomerangs.com/Axor/Water-Bath-Design Museum - short version.pdf"; 

var webView = new StageWebView(); 
webView.stage = stage; 
webView.viewPort = new Rectangle(0, 32, 320, 480); 
webView.addEventListener(Event.COMPLETE, onComplete); 
webView.loadURL(fPath); 

function onComplete(event:Event):void{ 
    trace("event = ", event); 
    trace("event.target = ", event.target); 
} 

Vielen Dank im Voraus! :)

Antwort

0

Dank Pavel fljōt.

Ich habe den URLLoader für den Dateidownload verwendet.

import flash.events.Event; 
import flash.filesystem.FileMode; 
import flash.filesystem.FileStream; 
import flash.filesystem.File; 

var urlLoader = new URLLoader(); 
urlLoader.dataFormat = URLLoaderDataFormat.BINARY; 
urlLoader.addEventListener(ProgressEvent.PROGRESS, onLoadFileProgress); 
urlLoader.addEventListener(Event.COMPLETE, onLoadFileComplete); 
urlLoader.load(new URLRequest("http://www.yourdomain.com/videos/myVideo.mp4")); 

function onLoadFileProgress(e:ProgressEvent):void{ 
    var loadedPct:uint = Math.round(100 * (e.bytesLoaded/e.bytesTotal)); 
    trace_txt.text = loadedPct + "% loaded."; 
} 

function onLoadFileComplete(e:Event):void{ 
    trace_txt.text = "File loaded"; 
    var file:File = File.documentsDirectory.resolvePath("myVideo_copied.mp4") 
    var fileStream:FileStream = new FileStream(); 
    fileStream.openAsync(file, FileMode.WRITE); 
    fileStream.addEventListener(OutputProgressEvent.OUTPUT_PROGRESS, outputProgressHandler); 
    fileStream.addEventListener(Event.CLOSE, onVideoSaveClose); 
    fileStream.writeBytes(e.target.data); 
    fileStream.close(); 
} 
function outputProgressHandler(event:OutputProgressEvent):void{ 
    if (event.bytesPending == 0){ 
     trace_txt.text = "File is completely written"; 
    } 
} 

var stageWebView = new StageWebView(); 
function onVideoSaveClose(event:Event):void { 
    trace("closed"); 
    stageWebView.stage = this.stage; 
    stageWebView.viewPort = new Rectangle(0, 0, 1024, 768); 
    var file:File = File.documentsDirectory.resolvePath("myVideo_copied.mp4") 
    stageWebView.loadURL(file.url); 
} 
1

Sie wollen Bandbreite sparen (paar Dateien zwischenspeichern), oder? Dann könnten Sie den Download (Speichern) Dateien File.applicationStorageDirectory (mit URLStream) und öffnen Sie es später mit StageWebView (http://forums.adobe.com/thread/928558)

Downloading and saving files with AIR for iOs

+0

Danke @Pavel fljōt Ich habe den URLLoader verwendet, um die Datei zu laden (herunterladen). Was denkst du? (Code in meiner Antwort unten) –