檔案下載 DownloadTo

JumpKick.HttpLib — 檔案下載 DownloadTo

說明

使用 .DownloadTo(儲存路徑, ...) 將網路資源直接下載儲存到本機磁碟,一般搭配 Http.Get() 使用。
回呼參數:

  1. onProgressChanged:(bytesCopied, totalBytes?)
    • bytesCopied:已經下載位元組數
    • totalBytes:檔案總位元組數,可空型別(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)

異常測試

填入不存在的資源位址,捕捉404錯誤

using System;
using JumpKick.HttpLib;

class Program
{
    static void Main(string[] args)
    {
        // 無效連結,觸發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

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *