4.5MultipartFile / IFormFile / IBrowserFile / FileInfo

MultipartFile 类型专为处理多部分表单文件而设计,它的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 MultipartFile.CreateFrom[Source] 的多个静态重载方法创建 MultipartFile 的实例。示例如下:

添加 MultipartFile 内容 ✨#

MultipartFile 类型专为处理多部分表单文件而设计,它的构造函数是私有的,因此无法直接使用 new 关键字进行实例化,不过,框架提供了 MultipartFile.CreateFrom[Source] 的多个静态重载方法创建 MultipartFile 的实例。示例如下:

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        // 从字节数组中添加文件        multipart.AddFile(MultipartFile.CreateFromByteArray(bytes, "files"));        // 从 Stream 中添加文件        multipart.AddFile(MultipartFile.CreateFromStream(stream, "files"));        // 从本地路径中添加文件        multipart.AddFile(MultipartFile.CreateFromPath(@"C:\Workspaces\httptest.jpg", "files"));        // 从 Base64 字符串中添加文件        multipart.AddFile(MultipartFile.CreateFromBase64String("77u/5rWL6K+V5paH5Lu25YaF5a65", "files"));        //从互联网 URL 中添加文件        multipart.AddFile(MultipartFile.CreateFromRemote("https://furion.net/img/furionlogo.png", "files"));    });

添加 IFormFileIFormFileCollection 内容#

ASP.NET Core 中,IFormFile 接口用于处理单个文件上传,而 IFormFileCollection 接口则管理多个文件上传。这两个接口简化了文件上传功能的实现。框架提供了 AddFile(IFormFile)AddFiles(IFormFileCollection) 扩展方法,便于为多部分表单内容添加文件。示例如下:

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        multipart.AddFile(formFile);        multipart.AddFile(formFile, "file");    // 自定义表单名称        multipart.AddFile(formFile, "file", "test.txt");    // 自定义文件名        multipart.AddFile(formFile, "file", "test.txt", "text/plain");    // 自定义媒体类型        multipart.AddFiles(formFiles);        multipart.AddFiles(formFiles, "files"); // 自定义表单名称    });

注意:若将 IFormFile 作为模型属性的类型,例如:

cs
public class FormClass // 支持属性 [AliasAs] 定义别名{    public int Id { get; set; }    public string Name { get; set; }    public IFormFile File { get; set; }}

则需确保已注册 FormFileContentProcessor。可通过全局或局部调用 .AddHttpContentProcessors(() => [new FormFileContentProcessor()]) 来完成注册:

  • 单次请求设置:
cs
HttpRequestBuilder.Post("https://furion.net/")    .AddHttpContentProcessors(() => [ new FormFileContentProcessor() ])
  • 全局配置:

Startup.csProgram.cs 文件中,配置并注册 HttpRemote 服务,以启用 IFormFile 内容处理器功能:

cs
services.AddHttpRemote(builder =>{    builder.AddHttpContentProcessors(() => [ new FormFileContentProcessor() ]);});

添加 IBrowserFileIEnumerable<IBrowserFile> 内容#

Blazor 中,IBrowserFile 接口用于处理单个文件上传,而 IEnumerable<IBrowserFile> 接口则管理多个文件上传。这两个接口简化了文件上传功能的实现。框架提供了 AddFile(IBrowserFile)AddFiles(IEnumerable<IBrowserFile>) 扩展方法,便于为多部分表单内容添加文件。示例如下:

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        multipart.AddFile(browserFile);        multipart.AddFile(browserFile, "file");    // 自定义表单名称        multipart.AddFile(browserFile, "file", "test.txt");    // 自定义文件名        multipart.AddFile(browserFile, "file", "test.txt", "text/plain");    // 自定义媒体类型        multipart.AddFile(browserFile, "file", "test.txt", "text/plain", maxAllowedSize: 512000);    // 自定义流可以提供的最大字节数        multipart.AddFiles(browserFiles);        multipart.AddFiles(browserFiles, "files"); // 自定义表单名称        multipart.AddFiles(browserFiles, "files", maxAllowedSize: 512000); // 自定义流可以提供的最大字节数    });

添加 FileInfo 内容#

若需上传本地文件,通常需先创建 FileInfo 实例,再通过 OpenRead() 获取流进行上传。。框架提供了 AddFile(FileInfo) 扩展方法,便于为多部分表单内容添加文件。示例如下:

cs
HttpRequestBuilder.Post("https://furion.net")    .SetMultipartContent(multipart =>    {        multipart.AddFile(fileInfo);        multipart.AddFile(fileInfo, "file");    // 自定义表单名称    });