AIR アプリ起動時に、自動でインターネット上のサーバから最新のファイルをダウンロードしてくる・・・という処理が作りたかったので、試しに FileReference.download() メソッドを使ってみたのだが、これだと保存するファイル名を指定するダイアログが開いてしまうね。
どうも、download メソッドだと、download して即ファイル保存をするということか。
ダウンロード後は一旦メモリ上に保持して、プログラム内で静的に指定しているパスに save メソッド使って書き出すような処理にしたいのだが、さて、どうすんのかね?
取りあえず、備忘録としてソースも貼っとく。
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml"
initialize="initProc()"
layout="absolute" width="348" height="202">
<mx:Label x="79" y="24" text="ダウンロードテスト" width="191" fontSize="18" textAlign="center" id="Title"/>
<mx:TextArea x="39" y="60" width="266" height="113" id="Message" text=""/>
<mx:Script>
<![CDATA[
import flash.events.*;
import flash.net.FileReference;
import flash.net.URLRequest;
public static const FILE_GET_URI:String = "http://www.exsample.jp/data/ds.zip";
public var FileRef:FileReference;
private function initProc():void {
FileRef = new FileReference();
FileRef.addEventListener(IOErrorEvent.IO_ERROR, onIOError);
FileRef.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
onSecurityError);
FileRef.addEventListener(Event.COMPLETE, onComplete);
Message.text += FILE_GET_URI + " Download Start.\n";
var request:URLRequest = new URLRequest();
request.url = FILE_GET_URI;
FileRef.download(request);
}
private function onIOError(evt:IOErrorEvent):void {
Message.text += "There was an IO Error.\n";
}
private function onSecurityError(evt:Event):void {
Message.text += "There was a security error.\n";
}
private function onComplete(evt:Event):void {
Message.text += "File was successfully downloaded.\n";
}
]]>
</mx:Script>
</mx:WindowedApplication>
コメントする