欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp.net core实现文件上传功能

程序员文章站 2023-12-04 16:38:00
本文实例为大家分享了单文件上传、多文件上传的功能,供大家参考,具体内容如下 单文件上传  上传文件在web应用程序中是一个常见的功能。在asp.net cor...

本文实例为大家分享了单文件上传、多文件上传的功能,供大家参考,具体内容如下

单文件上传
 上传文件在web应用程序中是一个常见的功能。在asp.net core中上传文件并保存在服务器上,是很容易的。下面就来演示一下怎么样在 asp.net core项目中进行文件上传。
 首先,创建一个 asp.net core 项目,然后在controller文件件添加一个homecontroller,然后在 views 文件夹的 home 文件夹里添加一个 new.cshtml 视图文件。如下图: 

asp.net core实现文件上传功能

添加一个 userviewmodel.cs在 model 文件夹中 , 代码如下:

 public class userviewmodel
{
  [required]
  [display(name = "姓名")]
  public string name { get; set; }

  [required]
  [display(name = "身份证")]
  [regularexpression(@"^(\d{15}$|^\d{18}$|^\d{17}(\d|x|x))$", errormessage = "身份证号不合法")]
  public string idnum { get; set; }

  public string idcardimgname { get; set; }

  [required]
  [display(name = "身份证附件")]
  [fileextensions(extensions = ".jpg,.png", errormessage = "图片格式错误")]
  public iformfile idcardimg { get; set; }
} 

然后添加一个 new.cshtml 视图文件在 views 文件夹中:

 @model userviewmodel

<form asp-controller="home" role="form" asp-action="new" enctype="multipart/form-data" method="post">
  <div class="form-group">
    <label asp-for="name"></label>
    <input type="text" class="form-control" asp-for="name" />
  </div>
  <div class="form-group">
    <label asp-for="idnum"></label>
    <input type="text" class="form-control" asp-for="idnum" />
  </div>
  <div class="form-group">
    <label asp-for="idcardimg"></label>
    <input type="file" asp-for="idcardimg" />
    <p class="help-block">上传。</p>
  </div>
  <button type="submit" class="btn btn-default">提交</button>
</form> 

在 homecontroller 中,添加页面对应的 action 方法:

 [httppost]
public iactionresult new([fromservices]ihostingenvironment env, [fromservices]appdbcontext dbcontext, userviewmodel user) {
  var filename = path.combine("upload", datetime.now.tostring("mmddhhmmss") + ".jpg");
  using (var stream = new filestream(path.combine(env.webrootpath, filename), filemode.createnew)) {
    user.idcardimg.copyto(stream);
  }

  var users = dbcontext.set<user>();
  var dbuser = new user() {
    name = user.name,
    idcardnum = user.idnum,
    idcardimgname = filename
  };
  users.add(dbuser);
  dbcontext.savechanges();

  return redirecttoaction(nameof(index));
} 

运行程序,查看表单: 

asp.net core实现文件上传功能

asp.net core实现文件上传功能

多文件上传

多文件上传和单文件上传类似,表单的 viewmodel 使用 icollection<ifromfile> ,然后表单的<input type="file" asp-for="idcardimg" mulpitle /> 添加上mulpitle就可以了(只支持 h5)。 

示例源码
 注:示例数据存储使用的 sqlite ,code first方式生成数据库。
 示例代码已经上传至 github: https://github.com/yuleyule66/aspnetcorefileupload

本文地址:
 作者博客:savorboard

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。