6.22HttpFileDownloadBuilder 构建器

创建于 2026 年 8 月 17 日约 1 分钟读完

除了上述方法,您还可以使用 HttpFileDownloadBuilder 构建器来配置下载网络资源所需的各项设置。

cs
var fileTransferResult = await httpRemoteService.SendAsync(HttpRequestBuilder.DownloadFile("https://furion.net/img/furionlogo.png", @"C:\Workspaces\"));

HttpFileDownloadBuilder 构建器是框架提供专门用来下载网络资源所需的各项设置。HttpFileDownloadBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.DownloadFile 的多个静态重载方法创建 HttpFileDownloadBuilder 的实例。

cs
HttpRequestBuilder.DownloadFile(httpMethod, requestUri, destinationPath, onProgressChanged, fileExistsBehavior, configure);HttpRequestBuilder.DownloadFile(requestUri, destinationPath, onProgressChanged, fileExistsBehavior, configure); // 默认 GET 请求

此外,HttpFileDownloadBuilder 包含以下配置功能:

cs
// 默认为 GET 请求。不指定保存的文件名将自动解析文件名,如最终下载路径为 C:\Workspaces\furionlogo.pngHttpRequestBuilder.DownloadFile("https://furion.net/img/furionlogo.png", @"C:\Workspaces\")    // 设置用于传输操作的缓冲区大小,以字节为单位,默认值为 80 KB    .SetBufferSize(80 * 1024)    // 设置文件保存的目标路径,可设置为 null,若为 null 时将获取 HttpRemoteOptions 的 DefaultFileDownloadDirectory 属性或应用程序执行目录进行设置    .SetDestinationPath(@"C:\Workspaces\")    // 设置当目标文件已存在时的行为    .SetFileExistsBehavior(FileExistsBehavior.Overwrite)    // 设置文件传输进度(通知)的间隔时间    .SetProgressInterval(TimeSpan.FromSeconds(1))    // 设置在文件开始传输时的操作    .SetOnTransferStarted(() => {})    // 设置用于传输进度发生变化时执行的委托    .SetOnProgressChanged(async progress => { })    // 设置在文件传输完成时的操作,委托参数为文件传输总花费时间(毫秒)    .SetOnTransferCompleted(duration => {})    // 设置在文件传输发生异常时的操作    .SetOnTransferFailed(exception => {})    // 设置在文件存在且配置为跳过时的操作    .SetOnFileExistAndSkip(() => {})    // 设置 HTTP 文件传输事件处理程序,CustomFileTransferEventHandler 为实现 IHttpFileTransferEventHandler 接口的类型    .SetEventHandler<CustomFileTransferEventHandler>()    .SetEventHandler(typeof(CustomFileTransferEventHandler))    // 设置 HttpRequestBuilder 实例    .With(builder => {})    // 支持扩展更多    // 设置下载最大线程数    .SetMaxThreads(4)    // 设置单次读取数据的最大空闲等待时间(滑动窗口超时)    .SetChunkTimeout(TimeSpan.FromSeconds(100))    // 设置多线程分块下载的最大重试次数    .SetChunkMaxRetries(3)    // 开启高速下载模式    .EnableHighSpeedMode(); // 支持传入下载最大线程数

在通过 HttpRequestBuilder.DownloadFile 方法成功构建 HttpFileDownloadBuilder 实例后,您可以利用 Send 方法或异步的 SendAsync 方法来执行发送操作。

cs
var fileTransferResult = httpRemoteService.Send(httpFileDownloadBuilder, cancellationToken);var fileTransferResult = await httpRemoteService.SendAsync(httpFileDownloadBuilder, cancellationToken);