httpDownload

Q3
複数ファイルの一括ダウンロード
[内容]
Webサーバから複数のファイルを一括でダウンロードしてファイルに保存したい

A3
[解決方法]
httpDownloadクラスを使用すれば、複数のファイルを一括でダウンロードすることが
できます。
httpSessionのgetメソッドを何度も呼び出す必要はありません。


[サンプルコード]



Button Button1 {
    Title = "ファイルダウンロード";

    Function OnTouch( e ) {
        try{
            /* 接続先を指定してhttpDownloadオブジェクトを作成します */
            var down = httpDownload("http://localhost");
            //.Form1.append(down, "down");

            /* プロパティを設定します */
            down.Retry = 0;     /* リトライ回数 */
            down.Wait = 0;      /* ダウンロード間隔 */

            /* ダウンロードするファイルの一覧を設定します */
            down.AddURL("/package/download/1");
            down.AddURL("/package/download/2");
            down.AddURL("/package/download/3");
            down.AddURL("/package/download/4");
            down.AddURL("/package/download/5");

            /* ダウンロードを開始します */
            down.Start();
        }catch( e ){
            MessageBox( e.message);
        }
    }
}

FileSystem fs;
Number num = 1;

/* 1つのファイルがダウンロードされるごとに呼び出されます */
/* 引数e.responseにはhttpResponseオブジェクトが渡されます */
Function OnAsyncDownload( e ) {
        if (e.response.status == $HTTP_OK) {
                /* ダウンロードしたファイルを保存します */
                var f = fs.open("file" + string(num++),
                                 FileSystem.OPEN_WRITE);
                f.write(e.response.body);
                f.close();
        } else if (e.response.status == $HTTP_SERVER_ERROR) {
                /* サーバエラーの場合はダウンロードを中止します */
                down.stop();
        }
}

/* すべてのダウンロードが完了したときに呼び出されます */
Function OnExitDownload( e ) {
        var message = "ダウンロードが完了しました";

        /* URLリストから結果を取得します */
        var list = down.GetURL();
        for (var i in list) {
                message += "\n" + list[i].url + " : ";
                switch (list[i].status) {
                        case 0:
                                message += "未処理";
                                break;
                        case 1:
                                message += "ダウンロード中";
                                break;
                        case 2:
                                message += "完了";
                                break;
                        case 3:
                                message += "エラー";
                                break;
                }
        }
        down.delete();
        MessageBox(message);
}
CRSファイル形式のサンプルを
  「複数ファイルの一括ダウンロードサンプル(Dwn_003.zip)
よりご利用いただけます。

管理番号:Dwn_003
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ