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

为何AspNetCore.Http.FormCollection的files属性为空?

问题解决:FormCollection Files为空的原因及修复

你的问题出在ContentDispositionHeaderValue的类型设置错误,以及缺少必要的表单字段名称绑定:

  • ContentDisposition类型错误
    你当前设置的是"attachment",但表单上传文件需要用"form-data"类型,这是MultipartFormDataContent识别文件字段的标准类型。

  • 缺少Name属性绑定
    需要给ContentDisposition设置Name属性,对应后端接收的表单字段名,否则后端无法识别这是一个文件表单项。

修复后的代码如下:

using (var content = new MultipartFormDataContent())
{
    var fileContent = new ByteArrayContent(System.IO.File.ReadAllBytes(FileName));
    fileContent.Headers.ContentDisposition = new ContentDispositionHeaderValue("form-data")
    {
        Name = "\"file\"", // 注意要加引号,匹配表单字段名
        FileName = "\"" + Path.GetFileName(FileName) + "\"" // 文件名加引号避免特殊字符解析问题
    };
    content.Add(fileContent);

    var requestUri = "http://localhost:5000/api/XXXX";
    var result = client.PostAsync(requestUri, content).Result;
}

额外注意:

  • 后端控制器如果用FormCollection接收,要确保字段名和前端设置的Name一致(这里是file);也可以直接用IFormFile file参数接收单个文件,写法更直观。
  • 尽量避免用.Result同步阻塞调用,建议改用await client.PostAsync(...)异步方式,防止出现死锁问题。

内容的提问来源于stack exchange,提问作者Mi-krater

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:51:59