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 |
Previous: 文件上传 Upload