4.17添加 IFormFile 和 IFormFileCollection 内容

创建于 2026 年 8 月 17 日约 1 分钟读完

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() ]);});