You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Flurl向ASP.NET Core的IFormFileCollection发送文件流列表

实现多文件上传的核心逻辑

你只需要在构建Multipart表单内容时,为每个文件流单独添加对应的表单文件项,且所有文件项的表单名称统一和接口参数名images保持一致即可,后端IFormFileCollection会自动绑定所有同名的文件字段。


示例代码(Flurl.Http扩展的PostMultipartAsync场景)

// 提前准备好的多文件流列表,每个元素对应 流对象、文件名
List<(Stream FileStream, string FileName)> uploadFiles = new List<(Stream, string)>
{
    (File.OpenRead("test1.jpg"), "test1.jpg"),
    (File.OpenRead("test2.png"), "test2.png"),
    (File.OpenRead("test3.gif"), "test3.gif")
};

var response = await "你的接口请求地址"
    .PostMultipartAsync(mp => 
    {
        // 循环批量添加所有文件,全部使用同一个表单名images
        foreach (var file in uploadFiles)
        {
            mp.AddFile("images", file.FileStream, file.FileName);
        }
        // 其他表单参数可在此处追加,示例:mp.AddString("remark", "上传备注");
    });

示例代码(HttpClient原生调用场景)

using var content = new MultipartFormDataContent();
// 循环添加所有文件
foreach (var file in uploadFiles)
{
    var streamContent = new StreamContent(file.FileStream);
    // 按实际文件类型设置ContentType,也可以省略不填
    streamContent.Headers.ContentType = System.Net.Http.Headers.MediaTypeHeaderValue.Parse("image/jpeg");
    content.Add(streamContent, name: "images", fileName: file.FileName);
}

using var httpClient = new HttpClient();
var response = await httpClient.PostAsync("你的接口请求地址", content);

注意事项

  • 所有文件对应的表单字段名必须和后端[FromForm]标记的参数名完全一致,此处固定为images,否则后端无法绑定到文件集合
  • 如果上传大文件,需要提前调整后端的请求大小限制,避免请求被服务器拦截
  • 用完的文件流记得及时释放,避免资源泄漏

内容的提问来源于stack exchange,提问作者Kyle M

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 18:18:02