谈到在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");
}