以前、WSH/JScriptでファイルのダウンロードをする方法をメモしましたが、今回は、その非同期バージョン。HTAなんかを作ったときは、こちらの方がUIが固まらなくて便利です。
// ファイルをダウンロードする関数
function downloadFile(url, savefile, callback) {
// HTTP通信を行うためのオブジェクト
var http = new ActiveXObject("Msxml2.XMLHTTP");
// コールバックを登録する
http.onreadystatechange = function () {
if (http.readyState == 4) {
if (http.status == 200) {
// バイナリファイルを保存するためのオブジェクト
var strm = new ActiveXObject("Adodb.Stream");
var adTypeBinary = 1, adSaveCreateOverWrite = 2;
// 保存する
strm.Type = adTypeBinary;
strm.Open();
strm.Write(http.responseBody); // 書き込み
strm.Savetofile(savefile, adSaveCreateOverWrite); // 保存
callback(true);
} else {
callback(false);
}
}
};
// URLにアクセスする
http.open("GET", url, true);
http.send(null); // 送信
}