asp.net core实现文件上传功能
程序员文章站
2023-12-15 11:03:52
本文实例为大家分享了单文件上传、多文件上传的功能,供大家参考,具体内容如下
单文件上传
上传文件在web应用程序中是一个常见的功能。在asp.net cor...
本文实例为大家分享了单文件上传、多文件上传的功能,供大家参考,具体内容如下
单文件上传
上传文件在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
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。