ファイルダウンロード DownloadTo

JumpKick.HttpLib — ファイルダウンロード DownloadTo

説明

.DownloadTo(保存先パス, ...) を使い、ネットワーク上のリソースを直接ローカルディスクへ保存します。通常は Http.Get() と組み合わせて使用します。
コールバック引数:

  1. onProgressChanged:(bytesCopied, totalBytes?)
    • bytesCopied:既にダウンロードしたバイト数
    • totalBytes:ファイル全体のバイト数、null許容型(long?)
      サーバーが Content‑Length レスポンスヘッダーを返さない場合、totalBytes.HasValue == false となり進捗率を計算できません。取得済みバイト数のみ出力可能です。
  2. onSuccess:(headers)
    ダウンロード完了時のコールバック。レスポンスヘッダーを取得できます。

サンプル

進捗と完了コールバック付き

using System;
using JumpKick.HttpLib;

class Program
{
    static void Main(string[] args)
    {
        string url = "https://codelexample.test/file.zip";
        string savePath = @"E:\httplib.zip";

        Http.Get(url)
        .DownloadTo(
            savePath,
            onProgressChanged: (bytesCopied, totalBytes) =>
            {
                if (totalBytes.HasValue)
                {
                    // *1.0d で浮動小数点演算に切り替え、整数除算が0になるのを防ぐ
                    double progress = (bytesCopied / totalBytes.Value * 1.0d) * 100;
                    Console.WriteLine($"ダウンロード進捗:{progress:F2} %");
                }
                Console.WriteLine($"ダウンロード済みバイト:{bytesCopied} bytes");
            },
            onSuccess: (headers) =>
            {
                Console.WriteLine("\nファイルダウンロード完了");
            }
        )
        .OnFail(ex =>
        {
            Console.WriteLine("ダウンロードエラー:" + ex.Message);
        })
        .Go();

        Console.ReadKey();
    }
}Code language: JavaScript (javascript)

サンプル‑最小構成ダウンロード

進捗監視なし

using System;
using JumpKick.HttpLib;

class Program
{
    static void Main(string[] args)
    {
        Http.Get("https://httpbin.org/image/png")
        .DownloadTo(@"E:\test.png",
            onSuccess: headers =>
            {
                Console.WriteLine("ダウンロード完了");
            })
        .OnFail(ex => Console.WriteLine(ex.Message))
        .Go();

        Console.ReadKey();
    }
}Code language: JavaScript (javascript)

例外テスト

存在しないリソースURLを指定し、404エラーをキャッチ

using System;
using JumpKick.HttpLib;

class Program
{
    static void Main(string[] args)
    {
        // 無効URL、404が発生
        Http.Get("https://httpbin.org/notfoundfile")
        .DownloadTo(@"E:\error.png",
            onProgressChanged: (bytesCopied, totalBytes) =>
            {
                Console.WriteLine($"ダウンロード済み:{bytesCopied} bytes");
            },
            onSuccess: headers =>
            {
                Console.WriteLine("ダウンロード完了");
            })
        .OnFail(ex =>
        {
            Console.WriteLine("例外捕捉:" + ex.Message);
        })
        .Go();

        Console.ReadKey();
    }
}Code language: JavaScript (javascript)

まとめ

機能API主要メソッド
GETリクエストHttp.Get(url)基本クエリ、ファイルダウンロード .DownloadTo()
POSTフォームHttp.Post(url).Form() フォームキーバリュー
POST JSONHttp.Post(url).Body(文字列,メディアタイプ)
ファイルアップロードHttp.Post(url).Upload() + NamedFileStream

ファイルダウンロード DownloadTo

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です