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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章