JumpKick.HttpLib — 檔案下載 DownloadTo
說明
使用 .DownloadTo(儲存路徑, ...) 將網路資源直接下載儲存到本機磁碟,一般搭配 Http.Get() 使用。
回呼參數:
onProgressChanged:(bytesCopied, totalBytes?)bytesCopied:已經下載位元組數totalBytes:檔案總位元組數,可空型別(long?)
若伺服器沒有回傳Content‑Length回應標頭,totalBytes.HasValue == false,無法計算下載百分比,只能輸出已下載位元組數。
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 JSON | Http.Post(url) | .Body(字串,媒體類型) |
| 檔案上傳 | Http.Post(url) | .Upload() + NamedFileStream |
檔案下載 DownloadTo
Previous: 檔案上傳 Upload