ASP.NET Core怎么上传文件 ASP.NET Core IFormFile文件上传方法

admin 百科 12
ASP.NET Core 文件上传基于 IFormFile 接口,支持单文件、多文件及大文件流式处理;需设置 enctype="multipart/form-data",后端校验空文件、大小、扩展名、MIME 类型,并用随机文件名防止路径遍历。

ASP.NET Core怎么上传文件 ASP.NET Core IFormFile文件上传方法-第1张图片-佛山资讯网

ASP.NET Core 上传文件主要通过 IFormFile 接口实现,它封装了 HTTP 表单中上传的单个文件数据。核心思路是:前端用 <input type="file"> 提交,后端在控制器方法中接收 IFormFileIFormFileCollection 参数,再读取、验证、保存。

基础单文件上传(IFormFile)

这是最常用的方式,适用于上传一个文件(如头像、单个文档)。

  • 确保 HTML 表单使用 enctype="multipart/form-data",否则文件不会被发送
  • 控制器方法参数直接声明为 IFormFile,框架会自动绑定
  • 检查 file != null && file.Length > 0 避免空上传
  • 推荐用 Path.GetRandomFileName() 生成安全文件名,避免路径遍历或重名

示例代码:



  
  

后端 Action:

[HttpPost]
public async Task Upload(IFormFile file)
{
  if (file == null || file.Length == 0)
    return BadRequest("请选择文件");

  var uploadsRoot = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "uploads");
  Directory.CreateDirectory(uploadsRoot);

  var fileName = Path.GetRandomFileName() + Path.GetExtension(file.FileName);
  var filePath = Path.Combine(uploadsRoot, fileName);

  using var stream = new FileStream(filePath, FileMode.Create);
  await file.CopyToAsync(stream);

  return Ok(new { FileName = fileName });
}

多文件上传(IFormFileCollection)

当需要一次上传多个文件(如批量图片),前端 input 的 name 属性要一致,并加 multiple 属性。

  • 后端接收类型改为 IFormFileCollection
  • 逐个遍历处理,注意总大小限制(比如所有文件加起来不超过 100MB)
  • 可结合 ModelState.IsValid 或手动校验扩展名、MIME 类型

对应 Action:

标签: html 前端 浏览器 字节 后端 ai pdf stream .net

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~