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

ASP.NET Core仅用Controller实现文件上传及获取文件信息问题

解决ASP.NET Core无Model文件上传及获取文件信息问题

你的代码问题核心是接收文件的方式错误——普通string参数无法获取上传的文件,ASP.NET Core中接收上传文件必须用IFormFile类型,且请求需采用multipart/form-data格式。以下是具体解决步骤:

1. 修正Controller方法

将方法改为用IFormFile接收文件,直接从该对象中获取文件名与文件内容:

[Route("/test1/upload")]
[HttpPost] // 文件上传必须用POST请求
public async Task<IActionResult> UploadGem(IFormFile file)
{
    if (file == null || file.Length == 0)
    {
        return BadRequest("未上传有效文件");
    }

    // 获取上传文件的文件名
    string fileName = file.FileName;
    // 定义服务器保存路径(示例用wwwroot下的uploads文件夹,需确保文件夹已创建)
    string savePath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "uploads", fileName);

    // 将文件写入服务器
    using (var stream = new FileStream(savePath, FileMode.Create))
    {
        await file.CopyToAsync(stream);
    }

    return Ok(new { 保存路径 = savePath, 文件名 = fileName });
}

2. 配置Insomnia请求

在Insomnia中按以下步骤设置请求:

  • 请求方法选择POST,URL填写http://你的服务地址/test1/upload
  • 切换到Body标签,选择Multipart Form类型
  • 点击Add,选择File类型,字段名填file(需与Controller方法的参数名一致)
  • 点击文件选择框选中要上传的文件,发送请求即可

关键说明

  • 原参数为null的原因:文件上传采用multipart格式,ASP.NET Core无法将文件映射到普通string参数,必须用IFormFile接收
  • 不要依赖客户端传递本地路径:浏览器或工具不会把本地文件的真实路径传给服务器,你只能获取文件名,服务器端的保存路径需自行定义,且要确保目标文件夹存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 01:44:52