ASP.NET MVC 网站开发总结(二)——一个或多个文件的异步或同步上传
简而言之,直接用代码展示如何实现文件的上传,这里需要使用到一个bootstrap的文件上传插件File Input(请自行下载)。
前台页面:
<!---->
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<link rel="stylesheet" href="css/bootstrap.min.css" />
<link rel="stylesheet" href="css/default.css" />
<link rel="stylesheet" href="css/fileinput.css" /> </head>
<body>
<div class="form-group add-pic-box">
<h2 class="add-pic-head">添加图片</h2>
<input id="upload-file" type="file" multiple class="file" data-min-file-count="1">
</div>
<script type="text/javascript" src="js/jquery-2.1.1.min.js" ></script>
<script type="text/javascript" src="js/bootstrap.min.js" ></script>
<script type="text/javascript" src="js/fileinput.js" ></script>
<script type="text/javascript" src="js/fileinput_locale_zh.js" ></script>
<script type="text/javascript">
//当然这里参数没有介绍完,可以更具需求参考其使用文档
$("#upload-file").fileinput({
uploadUrl: '/User/AddPicture', //这是要将文件上传到哪里的url
uploadAsync: false,//是否进行文件异步上传
maxFileSize: 10485760,//字节,fileinput.js默认是按照1000个字节为1kb来计算的,这个自己可以修改为1024
minFileCount: 1,//最少上传文件数量
maxFileCount: 1,//最大上传文件数量
allowedFileExtensions: ['jpg', 'png', 'gif'],//上传文件限制的类型
uploadExtraData: function () {
//这里是附加数据 description 对应于后台Action中的参数名称
return { description: "这是一个描述" };//可以更加需求获取一个动态的值
},
ajaxSettings: {
//这里是重写文件上传成功后,前台处理后台返回json数据
success: function(data)
{
alert(data.title, data.massage);
}
}
});
</script>
</body>
</html>
要使用File Input插件上传文件主要要引入了fileinput.css、fileinput.js以及fileinput_locale_zh.js(中文化)三个文件,其它的都是bootstrap的一些样式(当然要使用jquery,就应当引人jquery-2.1.1.min.js或其它版本)。
后台处理代码:
//添加图片
[HttpPost]
public ActionResult AddPicture(string description)
{
var result = new JsonResult();
//result.JsonRequestBehavior = JsonRequestBehavior.DenyGet; if (string.IsNullOrWhiteSpace(description))
{
description = "暂无";
}
description = description.Trim();
if (Request.Files.Count == )
{
return Json(new { title = "上传失败", massage = "上传图片不能为空!" }); }
HttpPostedFileBase newPicture = Request.Files[];
if (description.Length > || newPicture == null)
{
return Json(new { title = "上传失败", massage = "图片简介长度不合要求!" }); }
int id = Convert.ToInt32(User.Identity.Name);
string fileExt = "", fileName = "", path = Server.MapPath("~/Resources/LocalPic");
if (newPicture.ContentLength <= )
{
Picture picture = new Picture();
picture.UserId = id;
picture.Name = newPicture.FileName.Split('\\').Last();
picture.CreateTime = DateTime.Now;
picture.IsForbidden = false;
picture.IsShareOut = false;
picture.Description = description;
if (picture.Name.IndexOf('.') > -)
{
fileExt = picture.Name.Substring(picture.Name.LastIndexOf('.')).ToLower();
}
switch (fileExt)
{
case ".jpg":
case ".png":
case ".gif":
break;
default:
return Json(new { title = "上传失败", massage = "图片后缀名不合要求!" });
}
fileName = DateTime.Now.ToFileTime() + Guid.NewGuid().ToString("N") + fileExt;
picture.FilePath = fileName; newPicture.SaveAs(path + @"\" + fileName);//从客户端保存文件到本地
entity.Pictures.Add(picture);
entity.SaveChanges();
return Json(new { title = "上传成功", massage = "成功上传图片!" }); }
else
{
return Json(new { title = "上传失败", massage = "图片大小不合要求!" });
} }
上面代码给出的是上传一张图片的的实例,若是想上传多个文件,只需更改文件后缀限制、改变maxFileCount的值以及后台处理作相应的改变,若是想采用异步上传,只需将前台代码中的uploadAsync的值改为true就可以(默认也是true)。其它的一些功能实现留给读者自己去探索和实现吧!^_^
下一节中我们将要谈到图片的截图上传。
<我的博客主页>:http://www.cnblogs.com/forcheng/
ASP.NET MVC 网站开发总结(二)——一个或多个文件的异步或同步上传的更多相关文章
- ASP.NET MVC 网站开发总结(一)
		
历经一个多月的努力,工作室的门户网站(http://www.wingstudio.org)终于结束了内部公测. 仔细算一下,大概把网站开发出1.0版本大概用了一个月的时间(主要是利用课余时间),其后大 ...
 - ASP.NET MVC5 网站开发实践(二) Member区域 - 咨询管理的架构
		
咨询.留言.投诉等功能是网站应具备的基本功能,可以加强管理员与用户的交流,在上次完成文章部分后,这次开始做Member区域的咨询功能(留言.投诉都是咨询).咨询跟文章非常相似,而且内容更少.更简单. ...
 - ASP.NET MVC5 网站开发实践(二) Member区域 - 添加文章
		
上次把架构做好了,这次做添加文章.添加文章涉及附件的上传管理及富文本编辑器的使用,早添加文章时一并实现. 要点: 富文本编辑器采用KindEditor.功能很强大,国人开发,LGPL开源,自己人的好东 ...
 - ASP.NET MVC5 网站开发实践(二) Member区域 - 文章管理架构
		
上次把member的用户部分完成,现在开始做文章管理部分.文章部分根据涉及显示现实文章列表,发布文章,修改文章,删除文章等功能.最终的实现目标是使用权限来控制用户是否能进行相应操作,管理员权限的会显示 ...
 - ASP.NET MVC5 网站开发实践(二) Member区域–我的咨询列表及添加咨询
		
上次把咨询的架构搭好了,现在分两次来完成咨询:1.用户部分,2管理部分.这次实现用户部分,包含两个功能,查看我的咨询和进行咨询. 目录: ASP.NET MVC5 网站开发实践 - 概述 ASP.NE ...
 - ASP.NET MVC5 网站开发实践(二) Member区域 - 修改及删除文章
		
上次做了显示文章列表,再实现修改和删除文章这部分内容就结束了,这次内容比较简单,由于做过了添加文章,修改文章非常类似,就是多了一个TryUpdateModel部分更新模型数据. 目录: ASP.N ...
 - ASP.NET MVC5 网站开发实践(二) Member区域 - 全部文章列表
		
显示文章列表分两块,管理员可以显示全部文章列表,一般用户只显示自己的文章列表.文章列表的显示采用easyui-datagrid.后台需要与之对应的action返回json类型数据 目录 ASP.N ...
 - ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(3)修改资料、修改密码
		
在上一篇博客中实现了用户的注销和登录,其实代码里落了点东西,就是用户登录要更新最后一次登录时间和登录IP,这次补上.今天做修改资料和修改密码,TryUpdateModel是新用到的东西. 目录: AS ...
 - ASP.NET MVC 网站开发总结(三) ——图片截图上传
		
本着简洁直接,我们就直奔主题吧,这里需要使用到一个网页在线截图插件imgareaselect(请自行下载). 前台页面: <!DOCTYPE html> <html> < ...
 
随机推荐
- 手把手教你用python打造网易公开课视频下载软件3-对抓取的数据进行处理
			
上篇讲到抓取的数据保存到rawhtml变量中,然后通过编码最终保存到html变量当中,那么html变量还会有什么问题吗?当然会有了,例如可能html变量中的保存的抓取的页面源代码可能有些标签没有关闭标 ...
 - JavaScript 常用功能总结
			
小编吐血整理加上翻译,太辛苦了~求赞! 本文主要总结了JavaScript 常用功能总结,如一些常用的JS 对象,基本数据结构,功能函数等,还有一些常用的设计模式. 目录: 众所周知,JavaScri ...
 - Redis集群~StackExchange.redis连接Sentinel服务器并订阅相关事件(原创)
			
回到目录 对于redis-sentinel我在之前的文章中已经说过,它是一个仲裁者,当主master挂了后,它将在所有slave服务器中进行选举,选举的原则当然可以看它的官方文章,这与我们使用者没有什 ...
 - Node.js与Sails~方法拦截器policies
			
回到目录 policies sails的方法拦截器类似于.net mvc里的Filter,即它可以作用在controller的action上,在服务器响应指定action之前,对这个action进行拦 ...
 - mvc 权限设计
			
1.http://blog.csdn.net/vera514514/article/details/8285154 2.http://www.cnblogs.com/cmsdn/p/3433995.h ...
 - Mongodb安装与配置详解
			
简介: mongodb作为一款通用型数据库,除了能够创建,读取,更新和删除数据外,还提供一系列不断扩展的独特功能. a.索引: mongodb支持二级索引,允许多种快速查询,且提供和唯一索引,复合索引 ...
 - emmet插件学习,练习中遇到一些问题
			
emmet插件学习:帮助提高敲代码效率的插件 参考文献:Emmet(Zen coding)HTML代码使用技巧七则http://www.wzsky.net/html/Website/htmlcss/1 ...
 - 深入入门系列--Data Structure--04树
			
终于有机会重新回头学习一下一直困扰自身多年的数据结构了,赶脚棒棒哒.一直以来,对数据结构的掌握基本局限于线性表,稍微对树有一丢丢了解,而对于图那基本上就是不懂(不可否认,很多的考试中回避了图也是原因之 ...
 - 快速入门系列--WebAPI--01基础
			
ASP.NET MVC和WebAPI已经是.NET Web部分的主流,刚开始时两个公用同一个管道,之后为了更加的轻量化(WebAPI是对WCF Restful的轻量化),WebAPI使用了新的管道,因 ...
 - SQL Pass北京举行2014年第一次线下活动
			
地点:北京微软(中国)有限公司[望京利星行],三层308室 时间:2014年 3 月15日 13:30-16:30 SQL PASS 北京QQ群号:2435349 报名地址:http://1drv.m ...