2012-04-13 52 views
1

我使用的StageWebView加载MP4 & PDF文件在我的iPhone应用程序(的Adobe AIR 3.2的iOS,在Flash CS5.5)如何将装有StageWebView的文件(mp4&pdf)保存到iPhone目录?

下面是我使用加载PDF文件中的代码(相同的代码加载一个mp4文件)。

我需要将文件保存在iPhone上,所以下次用户打开应用程序时,我会检查文件是否存在,我将使用FileStream.open(filePath,FileMode.READ)加载它; 有没有办法保存使用StageWebView加载的文件?如果没有,那么做到这一点的最好方法是什么。

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); 
} 

在此先感谢! :)

回答

0

感谢帕维尔fljōt。

我已经使用URLLoader进行文件下载。

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

你想节省带宽(缓存几个文件),对吧?然后,你可以下载文件(保存)到File.applicationStorageDirectory(使用URLStream)都后来随着的StageWebView(http://forums.adobe.com/thread/928558)打开它

Downloading and saving files with AIR for iOs

+0

谢谢@Pavelfljōt 我已经使用URLLoader加载(下载)文件。 你觉得呢? (代码在我的答案下面) – 2012-04-14 11:17:58