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

Blazor中使用Refit Client上传文件时IFormFile为null的问题

问题分析与解决

核心错误点

你在创建StreamPart时,错误地将表单字段名设置成了文件名,导致后端无法匹配到名为file的IFormFile参数。

修正方案

1. 调整Blazor代码中的StreamPart参数

将StreamPart的第二个参数(表单字段名)改为"file",与后端控制器的参数名严格匹配:

async Task OnChanged(FileChangedEventArgs e)
{
    foreach (var file in e.Files)
    {
        using var fs = file.OpenReadStream(); // 用using自动释放流资源
        await _api.PostDeployAsync(new StreamPart(fs, "file", file.Name, "application/zip"));
    }
}

2. 确认Refit API定义(当前无需修改)

你的Refit接口定义是正确的,[AliasAs("file")]确保参数映射到表单字段file,配合修正后的StreamPart即可正常传递:

[Multipart]
[Post("/api/cluster/deploy")]
Task PostDeployAsync([AliasAs("file")] StreamPart stream);

额外注意事项

  • 始终用using包裹文件流,避免资源泄漏;
  • 若上传大文件,可在OpenReadStream()中指定最大允许大小,例如file.OpenReadStream(maxAllowedSize: 1024 * 1024 * 100)(限制为100MB);
  • 确认后端DisableRequestSizeLimit特性生效,避免因文件大小限制导致接收失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:00:58