6.22HttpFileDownloadBuilder 构建器
创建于 2026 年 8 月 17 日约 1 分钟读完
除了上述方法,您还可以使用 HttpFileDownloadBuilder 构建器来配置下载网络资源所需的各项设置。
var fileTransferResult = await httpRemoteService.SendAsync(HttpRequestBuilder.DownloadFile("https://furion.net/img/furionlogo.png", @"C:\Workspaces\"));HttpFileDownloadBuilder 构建器是框架提供专门用来下载网络资源所需的各项设置。HttpFileDownloadBuilder 的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 HttpRequestBuilder.DownloadFile 的多个静态重载方法创建 HttpFileDownloadBuilder 的实例。
HttpRequestBuilder.DownloadFile(httpMethod, requestUri, destinationPath, onProgressChanged, fileExistsBehavior, configure);HttpRequestBuilder.DownloadFile(requestUri, destinationPath, onProgressChanged, fileExistsBehavior, configure); // 默认 GET 请求此外,HttpFileDownloadBuilder 包含以下配置功能:
// 默认为 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 方法来执行发送操作。
var fileTransferResult = httpRemoteService.Send(httpFileDownloadBuilder, cancellationToken);var fileTransferResult = await httpRemoteService.SendAsync(httpFileDownloadBuilder, cancellationToken);