4.4Base64 / 本地文件 / 流

在多部分表单内容中添加来自 Base64 字符串的文件内容。

添加 Base64 字符串文件内容#

在多部分表单内容中添加来自 Base64 字符串的文件内容。

cs
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

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

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

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

添加 Stream 内容#

在多部分表单内容中添加 Stream 内容。

cs
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);     // 可设置请求完成后自动释放资源    });

添加字节数组内容#

在多部分表单内容中添加字节数组内容。

cs
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 将自动根据文件扩展名解析    });