Files
KinginfoGateway/src/Admin/ThingsGateway.Furion/V5_Experience/HttpRemote/Extensions/HttpMultipartFormDataBuilderExtensions.cs
2025-05-14 18:52:19 +08:00

88 lines
3.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ------------------------------------------------------------------------
// 版权信息
// 版权归百小僧及百签科技(广东)有限公司所有。
// 所有权利保留。
// 官方网站https://baiqian.com
//
// 许可证信息
// 项目主要遵循 MIT 许可证和 Apache 许可证(版本 2.0)进行分发和使用。
// 许可证的完整文本可以在源代码树根目录中的 LICENSE-APACHE 和 LICENSE-MIT 文件中找到。
// ------------------------------------------------------------------------
using Microsoft.AspNetCore.Http;
using System.Text;
namespace ThingsGateway.HttpRemote;
/// <summary>
/// <see cref="HttpMultipartFormDataBuilder" /> 拓展类
/// </summary>
public static class HttpMultipartFormDataBuilderExtensions
{
/// <summary>
/// 添加文件
/// </summary>
/// <param name="httpMultipartFormDataBuilder">
/// <see cref="HttpMultipartFormDataBuilder" />
/// </param>
/// <param name="formFile">
/// <see cref="IFormFile" />
/// </param>
/// <param name="name">表单名称</param>
/// <param name="fileName">文件的名称</param>
/// <param name="contentType">内容类型</param>
/// <param name="contentEncoding">内容编码</param>
/// <returns>
/// <see cref="HttpMultipartFormDataBuilder" />
/// </returns>
public static HttpMultipartFormDataBuilder AddFile(this HttpMultipartFormDataBuilder httpMultipartFormDataBuilder,
IFormFile formFile, string? name = null, string? fileName = null, string? contentType = null,
Encoding? contentEncoding = null)
{
// 空检查
ArgumentNullException.ThrowIfNull(formFile);
// 初始化 MemoryStream 实例
var memoryStream = new MemoryStream();
// 将 IFormFile 内容复制到内存流
formFile.CopyTo(memoryStream);
// 将内存流的位置重置到起始位置
memoryStream.Position = 0;
// 添加文件流
return httpMultipartFormDataBuilder.AddStream(memoryStream, name ?? formFile.Name,
fileName ?? formFile.FileName, contentType ?? formFile.ContentType, contentEncoding,
true);
}
/// <summary>
/// 添加多个文件
/// </summary>
/// <param name="httpMultipartFormDataBuilder">
/// <see cref="HttpMultipartFormDataBuilder" />
/// </param>
/// <param name="formFiles">
/// <see cref="IFormFileCollection" />
/// </param>
/// <param name="name">表单名称</param>
/// <returns>
/// <see cref="HttpMultipartFormDataBuilder" />
/// </returns>
public static HttpMultipartFormDataBuilder AddFiles(this HttpMultipartFormDataBuilder httpMultipartFormDataBuilder,
IEnumerable<IFormFile> formFiles, string? name = null)
{
// 空检查
ArgumentNullException.ThrowIfNull(formFiles);
// 逐条添加文件
foreach (var formFile in formFiles)
{
httpMultipartFormDataBuilder.AddFile(formFile, name ?? formFile.Name);
}
return httpMultipartFormDataBuilder;
}
}