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
相关产品推荐
相关产品推荐

