文件下载 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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注