4.4Base64 / 本地文件 / 流
在多部分表单内容中添加来自 Base64 字符串的文件内容。
添加 Base64 字符串文件内容#
在多部分表单内容中添加来自 Base64 字符串的文件内容。
HttpRequestBuilder.Post("https://furion.net") .SetMultipartContent(multipart => { multipart.AddFileFromBase64String("77u/5rWL6K+V5paH5Lu25YaF5a65", "file", "test.txt"); multipart.AddFileFromBase64String("77u/5rWL6K+V5paH5Lu25YaF5a65", "file", "test.txt", "text/plain"); // 自定义媒体类型,不传 Content-Type 将自动根据文件扩展名解析 });注意:从 Base64 字符串添加文件时,文件大小限制为 100MB。
添加本地路径文件内容(进度)#
在多部分表单内容中添加来自本地路径的文件内容。
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
添加 Stream 内容#
在多部分表单内容中添加 Stream 内容。
HttpRequestBuilder.Post("https://furion.net") .SetMultipartContent(multipart => { multipart.AddStream(stream, "file"); multipart.AddStream(stream, "file", "test.txt"); // 设置文件名 multipart.AddStream(stream, "file", "test.txt", "text/plain"); // 设置媒体类型,不传 Content-Type 将自动根据文件扩展名解析 multipart.AddStream(stream, "file", "test.txt", "text/plain", disposeResourcesOnRequestCompletion: true); // 可设置请求完成后自动释放资源 });添加字节数组内容#
在多部分表单内容中添加字节数组内容。
HttpRequestBuilder.Post("https://furion.net") .SetMultipartContent(multipart => { multipart.AddByteArray(bytes, "file"); multipart.AddByteArray(bytes, "file", "test.txt"); // 设置文件名 multipart.AddByteArray(bytes, "file", "test.txt", "text/plain"); // 设置媒体类型,不传 Content-Type 将自动根据文件扩展名解析 });