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

WebAPI如何接收多文件参数?实操问题咨询

单HTTP请求接收多个PDF文件的实现方案

完全可以在单条POST请求中发送并接收多个PDF文件,通常采用multipart/form-data格式传输,这也是Postman上传多文件的默认格式。下面针对你的问题给出具体解决方案:

你的代码问题

你误用了FormFileCollection类作为参数,正确的应该使用**IFormFileCollection接口**,或者直接接收List<IFormFile>类型参数。另外要确保Postman的请求配置正确,否则参数绑定会失败。

可行的控制器实现方案

方案1:用IFormFileCollection批量接收

这是最通用的方式,自动绑定所有上传的文件:

[HttpPost("merge")]
public ActionResult<string> Merge(IFormFileCollection files)
{            
    if (files.Count > 0)
    {
        // 遍历处理每个PDF文件,可添加格式校验
        foreach (var file in files)
        {
            if (file.ContentType.Equals("application/pdf", StringComparison.OrdinalIgnoreCase) 
                && file.Length > 0)
            {
                // 示例:保存文件到本地
                var savePath = Path.Combine(Directory.GetCurrentDirectory(), "Uploads", Path.GetFileName(file.FileName));
                using (var stream = new FileStream(savePath, FileMode.Create))
                {
                    file.CopyTo(stream);
                }
            }
        }
        return Ok($"成功接收 {files.Count} 个文件");                
    }

    return BadRequest("未上传任何有效文件");
}

方案2:用List<IFormFile>接收

和IFormFileCollection逻辑一致,更贴合.NET集合使用习惯:

[HttpPost("merge")]
public ActionResult<string> Merge(List<IFormFile> files)
{            
    if (files?.Count > 0)
    {
        return Ok($"成功接收 {files.Count} 个文件");                
    }

    return BadRequest("未上传任何文件");
}

方案3:接收指定名称的单个文件

如果Postman中每个文件的Key不同(比如pdf1、pdf2),可以单独声明参数:

[HttpPost("merge")]
public ActionResult<string> Merge(IFormFile pdf1, IFormFile pdf2)
{            
    int validFileCount = 0;
    if (pdf1 != null && pdf1.Length > 0) validFileCount++;
    if (pdf2 != null && pdf2.Length > 0) validFileCount++;

    if (validFileCount > 0)
    {
        return Ok($"成功接收 {validFileCount} 个文件");                
    }

    return BadRequest("未上传任何文件");
}

Postman配置要点

  • 请求方法设为POST,URL匹配控制器路由(比如/api/xxx/merge)
  • 选择Body -> form-data,Postman会自动设置Content-Type: multipart/form-data
  • 所有文件项的Key要和控制器参数名一致:
    • 方案1/2中,所有文件的Key都设为files
    • 方案3中,分别设为pdf1和pdf2
  • 可选:在控制器中校验文件的ContentType或扩展名,确保只处理PDF文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 11:42:46