4.13添加本地路径文件内容(进度)

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

在多部分表单内容中添加来自本地路径的文件内容。

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        // 文件流方式        multipart.AddFileAsStream(@"C:\Workspaces\httptest.jpg", "file");        multipart.AddFileAsStream(@"C:\Workspaces\httptest.jpg", "file", "test.jpg");    // 自定义文件名        multipart.AddFileAsStream(@"C:\Workspaces\httptest.jpg", "file", "test.jpg", "image/jpeg");    // 自定义媒体类型,不传 Content-Type 将自动根据文件扩展名解析        // 字节数组方式        multipart.AddFileAsByteArray(@"C:\Workspaces\httptest.jpg", "file");        multipart.AddFileAsByteArray(@"C:\Workspaces\httptest.jpg", "file", "test.jpg");    // 自定义文件名        multipart.AddFileAsByteArray(@"C:\Workspaces\httptest.jpg", "file", "test.jpg", "image/jpeg");    // 自定义媒体类型,不传 Content-Type 将自动根据文件扩展名解析    });

此外,系统提供了 AddFileWithProgressAsStream 方法,与 AddFileAsStream 相比,它允许您实时获取文件传输进度。例如:

cs
// 创建文件传输进度信息的通道var progressChannel = Channel.CreateUnbounded<FileTransferProgress>();HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        multipart.AddFileWithProgressAsStream(@"C:\Workspaces\httptest.jpg", progressChannel, "file");    });// 订阅文件传输进度通知await foreach (var fileTransferProgress in progressChannel.Reader.ReadAllAsync(cancellationToken)){    Console.WriteLine(fileTransferProgress.ToSummaryString());    // 每秒延迟    await Task.Delay(TimeSpan.FromSeconds(1), cancellationToken);}

这样,文件传输过程中每秒都会打印传输进度信息。 react-error-boundary