[实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像
写在前面
最近又开始忙了,工期紧比较赶,另外明天又要去驾校,只能一个功能一个功能的添加了,也许每次完成的功能确实不算什么,等将功能都实现了,然后在找一个好点的ui对前端重构一下。
系列文章
[EF]vs15+ef6+mysql code first方式
[实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册
[实战]MVC5+EF6+MySql企业网盘实战(3)——验证码
[实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像
示例
这里采用最简单的form中上传文件的方式。当然也可以使用插件什么的。
             //提交到指定UserInfo下的Register中,并指定提交方式post
@using (Html.BeginForm("Register", "UserInfo", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()  //在Html表单里面使用了@Html.AntiForgeryToken()就可以阻止CSRF攻击。
    <div class="form-horizontal">
        <h4>UserInfo</h4>
        <hr />
        @Html.ValidationSummary(true)
        <div class="form-group">
            @Html.LabelFor(model => model.Header, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                <input type="file" accept="image/*" name="name" value="" />
            </div>
        </div>
        <div class="form-group">
            <label class="control-label col-md-2">验证码</label>
            <div class="col-md-10">
                <input type="text" name="name" value=" " />  <img id="imgCode" style="cursor:pointer;" title="切换下一张" src="/UserInfo/VerifyCodeImage" alt="验证码" />
            </div>
        </div>
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}
<div>
    @Html.ActionLink("Back to List", "Users")
</div>
controller
[HttpPost]
public ActionResult Register(UserInfo userInfo)
{
int saveCount = ; if (ModelState.IsValid)
{
var files = Request.Files;
if (files.Count > )
{
var file = files[];
string strFileSavePath = Request.MapPath("~/Content/Images"); string strFileExtention = Path.GetExtension(file.FileName);
if (!Directory.Exists(strFileSavePath))//如果项目不存在
{
Directory.CreateDirectory(strFileSavePath);创建指定路径下的文件 如:path=C:\win\123.txt
} file.SaveAs(strFileSavePath + "/" + userInfo.DisplayName + strFileExtention);
userInfo.Header = "/Content/Images/" + userInfo.DisplayName + strFileExtention;
}
_userInfoServiceRepository.Add(userInfo);
saveCount = _userInfoServiceRepository.SaveChanges();
}
if (saveCount > )
{
return RedirectToAction("Users");
}
else
{
return View(userInfo);
}
}
结果

总结
使用原生的提交表单是最简单的方式,其实如果在做移动端的话在手机浏览器不支持flash或者html5,这中方式也是最合适的方式。
[实战]MVC5+EF6+MySql企业网盘实战(4)——上传头像的更多相关文章
- [实战]MVC5+EF6+MySql企业网盘实战(28)——其他列表
		写在前面 本篇文章将实现,其他文件类型的列表. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5+EF ... 
- [实战]MVC5+EF6+MySql企业网盘实战(27)——应用列表
		写在前面 本篇文章将实现应用列表,同样和其他列表的不同之处,在于查询条件的不同. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘 ... 
- [实战]MVC5+EF6+MySql企业网盘实战(2)——验证码
		写在前面 断断续续,今天算是把验证码的东东弄出来了. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) [实战]MVC5 ... 
- [实战]MVC5+EF6+MySql企业网盘实战(2)——用户注册
		写在前面 上篇文章简单介绍了项目的结构,这篇文章将实现用户的注册.当然关于漂亮的ui,这在追后再去添加了,先将功能实现.也许代码中有不合适的地方,也只有在之后慢慢去优化了. 系列文章 [EF]vs15 ... 
- [实战]MVC5+EF6+MySql企业网盘实战(1)
		写在前面 不久前,一个朋友让帮他弄一个单位的企业网盘的管理站点,一直忙,最近抽出了点时间,也想琢磨琢磨mvc,ef,mysql,这算是边琢磨,边实践吧. 系列文章 [实战]MVC5+EF6+MySql ... 
- [实战]MVC5+EF6+MySql企业网盘实战(26)——音乐列表
		写在前面 本篇文章将实现,音乐列表,同样和其他列表的不同之处,在于查询条件的不同. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网 ... 
- [实战]MVC5+EF6+MySql企业网盘实战(25)——种子列表
		写在前面 上篇文章实现了视频列表,本篇文章继续实现其他的文件列表.功能相似.这里就不再赘述. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MyS ... 
- [实战]MVC5+EF6+MySql企业网盘实战(24)——视频列表
		写在前面 上篇文章实现了文档列表,所以实现视频列表就依葫芦画瓢就行了. 系列文章 [EF]vs15+ef6+mysql code first方式 [实战]MVC5+EF6+MySql企业网盘实战(1) ... 
- [实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表
		写在前面 上篇文章实现了图片列表,这篇文章实现文档列表将轻车熟路,因为逻辑基本相似,只是查询条件的不同.这里将txt,doc,docx,ppt,pptx,xls,xlsx的文件都归为文档列表中. 系列 ... 
随机推荐
- Android性能优化-减小图片下载大小
			原文链接 https://developer.android.com/topic/performance/network-xfer.html 内容概要 理解图片的格式 PNG JPG WebP 如何选 ... 
- springboot mybatis pagehelper 分页问题
			1:添加依赖 compile group: 'com.github.pagehelper', name: 'pagehelper-spring-boot-starter', version: '1.2 ... 
- Jquery实现日期转换为 Unix时间戳及时间戳转换日期
			(function ($) { $.extend({ myTime: { /** * 当前时间戳 * @return <int> unix时间戳(秒) */ CurTime: functi ... 
- Vue加载组件、动态加载组件的几种方式
			https://cn.vuejs.org/v2/guide/components.html https://cn.vuejs.org/v2/guide/components-dynamic-async ... 
- 基于Centos搭建Python Web 环境搭建教程
			CentOS 7.2 64 位操作系统 安装 setuptools 工具 安装 因为之后我们需要安装 Django ,而 Django 需要用这个工具,所以我们需要先安装 setuptools 工具. ... 
- Myloader参数说明
			-d, --directory 备份文件的目录 -q, --queries-per-transaction 每次事务执行的查询数量,默认是1000 -o, --overwrite-tables 如果要 ... 
- C#-MVC开发微信应用(5)--自动应答系统-自动回复机器人
			前几篇已经介绍菜单和有回复信息操作,下面我们就结合snf微信端管理页面,看一下什么才是自动应答系统. 定制的服务 对于微信服务号来说,最主要的功能是提供更好的服务.用户更方便的操作,以及更快的反馈响应 ... 
- 用pigz代替gzip -- 并行压缩软件
			用pigz代替gzip By yejr on 03 十二月 2012 pig是个啥东东?官网:http://zlib.net/pigz一句话简介: A parallel implementation ... 
- Socket网络编程--网络爬虫(3)
			上一小节我们实现了从博客园的首页获取一些用户的用户名,并保存起来.接下来的这一小节我将对每个用户名构建一个用户的博客主页,然后从这个主页获取所有能获取到的网页,网页的格式现在是http://www.c ... 
- golang:reflect反射
			因为之前一直以C++为主要开发语言,所以刚接触go语言中的reflect时感觉很懵逼,因此决定找资料彻底学习一下. 到底反射是什么? https://blog.golang.org/laws-of-r ... 
