AS3使用對話框另存爲本地文件(不打開網頁瀏覽器)

談到在AS3中另存爲一個本地文件,許多人會馬上想到使用navigateToURL來實現,但是這樣做有一個很大的缺陷,那就是在另存爲時會調用網頁瀏覽器,以下載的方式另存爲,在配置較差的電腦上肯能會卡機,並且這樣做總讓人覺得不太正統。現在向大家介紹一種通過使用URLLoader與FileReference來使用對話框另存爲本地文件方法。
點擊查看FileReference類的說明文檔

AS3中用來加載文件或數據的通常爲以下三個類:
1.Loader(可以加載圖片 swf等)
2.URLLoader (主要加載數據 可以用於遠程後臺請求)
3.URLStream 以流的方式加載,已下載文件的內容將作爲原始二進制數據提供。

因爲我們需要另存爲的文件類型比較廣泛,所以在這裏我們使用URLLoader類。
首先我們需要通過URLLoader來讀取需要另存爲的文件。代碼如下:

var down_Loader:URLLoader=new URLLoader(); 
down_Loader.dataFormat = URLLoaderDataFormat.BINARY; 
//切記這裏一定要用二進制的方式讀取,否則另存爲後的文件會是亂碼!
down_Loader.addEventListener(Event.COMPLETE, Loaded); 
down_Loader.load(new URLRequest("test.dat")); 
function Loaded(evt:Event):void { 
//Code 
} 

文件讀取完畢後,原文件的數據都會保存在down_Loader中,下面我們所需要做的僅僅就是用FileReference中的save函數保存這些數據到一個新的文件。(可能會有人發現幫助文檔中沒有這個函數,但是他的確數存在的)。 在這之前我們必須先實例化FileReference類:

var down:FileReference = new FileReference ();
然後再剛纔創建的Loaded這個函數中加入以下代碼:
down.save(down_Loader.data,"test.dat");//第二個參數爲默認文件名


完整代碼如下:
//==========AS3使用對話框另存爲本地文件================
import flash.net.FileReference;
import flash.net.URLRequest;

var down:FileReference = new FileReference ();
var down_Loader:URLLoader = new URLLoader();
down_Loader.dataFormat = URLLoaderDataFormat.BINARY; 
down_Loader.addEventListener(Event.COMPLETE, Loaded); 
down_Loader.load(new URLRequest("test.dat"));

function 
Loaded(evt:Event):void
{
   down.save(down_Loader.data,"test.dat");
}
發佈了19 篇原創文章 · 獲贊 8 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章