当前位置: 移动技术网 > IT编程>开发语言>.net > asp.net core实现文件上传功能

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

2017年12月12日  | 移动技术网IT编程  | 我要评论

李福成之子李高起图片,姜朋勇,海贼王756

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

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

添加一个 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));
} 

运行程序,查看表单: 


多文件上传

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

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

本文地址:
 作者博客:savorboard

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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网