2009-10-25 [メモ][AIR][javascript]WEB上のファイルをローカルに保存する方法

地味にFlex用かなんかのしかググっても見つからなかったので、
javascriptでやる方法を書いてみる。
AIRAliases.jsが読み込まれている前提なので、
無い場合は、Aliasを設定してやらなきゃだめですよ。
<script type="text/javascript" src="lib/air/AIRAliases.js"></script>
/*
* 指定したURLの読み込みに成功した時に実行される。
* 指定したファイルを読み込んでから、
* writeFile()を呼び出す。
*/
function urlLoaded(event) {
urlStream.readBytes(fileData, 0, urlStream.bytesAvailable);
writeFile();
}
/*
* 読み込まれたデータを書き出す。
* filenameで指定したファイル名で、デスクトップへ保存する。
* マイドキュメントへ保存する場合は、
* desktopDirectoryをdocumentsDirectoryに書き換える。
*/
function writeFile() {
var filename = "test.gif";
var file = air.File.desktopDirectory.resolvePath(filename);
var fileStream = new air.FileStream();
fileStream.addEventListener(air.Event.CLOSE, fileClosed);
fileStream.open(file, air.FileMode.WRITE);
fileStream.writeBytes(fileData, 0, fileData.length);
fileStream.close();
}
/*
* ファイルを閉じる。特に意味は無いけど、無いときっとだめなんだろうな。
*/
function fileClosed(event) {
a = 0;
}
/*
* urlStringに、ダウンロードしたいファイル名を指定する。
*/
var urlString = "http://www.dinorose.net/src/h1.gif";
var urlReq = new air.URLRequest(urlString);
var urlStream = new air.URLStream();
var fileData = new air.ByteArray();
urlStream.addEventListener(air.Event.COMPLETE, urlLoaded);
urlStream.load(urlReq);
</script>
まぁ、これで動くんだけど、
jQueryで$.getJSON()して取得した画像のURLとか投げると、
なんか動かない。謎。


