4.13添加本地路径文件内容(进度)
创建于 2026 年 8 月 17 日约 1 分钟读完
在多部分表单内容中添加来自本地路径的文件内容。
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 相比,它允许您实时获取文件传输进度。例如:
// 创建文件传输进度信息的通道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