6.25HttpFileUploadBuilder 构建器

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

除了上述方法,您还可以使用 HttpFileUploadBuilder 构建器来配置上传文件资源所需的各项设置。

cs
await httpRemoteService.SendAsync(HttpRequestBuilder.UploadFile("https://localhost:7044/HttpRemote/AddFile", @"C:\Workspaces\httptest.jpg", "file");

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

cs
HttpRequestBuilder.UploadFile(httpMethod, requestUri, filePath, name, onProgressChanged, fileName, configure);HttpRequestBuilder.UploadFile(requestUri, filePath, name, onProgressChanged, fileName, configure); // 默认 POST 请求

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

cs
// 默认为 POST 请求,默认表单名为 fileHttpRequestBuilder.UploadFile("https://localhost:7044/HttpRemote/AddFile", @"C:\Workspaces\httptest.jpg", "file")    // 设置内容类型(文件类型)    .SetContentType("image/jpeg")    // 设置允许的文件扩展名    .SetAllowedFileExtensions([".jpg", ".png"])    .SetAllowedFileExtensions(".jpg;.png")    // 设置允许的文件大小,字节单位    .SetMaxFileSizeInBytes(5 * 1024 * 1024)    // 设置文件传输进度(通知)的间隔时间    .SetProgressInterval(TimeSpan.FromSeconds(1))    // 设置在文件开始传输时的操作    .SetOnTransferStarted(() => {})    // 设置用于传输进度发生变化时执行的委托    .SetOnProgressChanged(async progress => { })    // 设置在文件传输完成时的操作,委托参数为文件传输总花费时间(毫秒)    .SetOnTransferCompleted(duration => {})    // 设置在文件传输发生异常时的操作    .SetOnTransferFailed(exception => {})    // 设置 HTTP 文件传输事件处理程序,CustomFileTransferEventHandler 为实现 IHttpFileTransferEventHandler 接口的类型    .SetEventHandler<CustomFileTransferEventHandler>()    .SetEventHandler(typeof(CustomFileTransferEventHandler))    // 追加多部分表单内容    .WithMultipart(multipart => {});    // 设置 HttpRequestBuilder 实例    .With(builder => {});   // 支持扩展更多

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

cs
httpRemoteService.Send(httpFileUploadBuilder, cancellationToken);await httpRemoteService.SendAsync(httpFileUploadBuilder, cancellationToken);