图片上传和显示——上传图片——上传文件)==ZJ
http://www.cnblogs.com/yc-755909659/archive/2013/04/17/3026409.html aspx上传
http://www.cnblogs.com/mq0036/p/3715024.html 异步上传
-----------------------------------------ZJ版
MVC中利用ajaxfileupload.js插件实现异步上传:(这个既可以实现图片上传也可以实现文件上传)
JS引入:
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script src="~/Content/UploadFile/ajaxfileupload.js"></script>
前台实现:
//Html部分 <div> <h2>请选择要上传的文件</h2> <input type="file" id="imgFile" name="imgFile" /><input type="button" value="上传" id="btnUp"/> <br /> <div> <img id="articleFacePhotoImg" /> </div> </div> //JS引入 <script src="~/Scripts/jquery-1.8.2.min.js"></script> <script src="~/Content/UploadFile/ajaxfileupload.js"></script> //上传文件JS调用代码 <script type="text/javascript"> //异步上传文件 uploadFacePhoto = function () { //判断内容是否为空 if ($("#imgFile").val().length <= 0) { return; } //执行异步上传 $.ajaxFileUpload({ url: '@Url.Action("UploadImg","Home")',//上传到文件服务器请求地址 type: 'post', data: { dir: 'image' },//自定义参数 secureuri: false,//是否需要安全协议,一般设置为false fileElementId: 'imgFile',//文件上传遇的ID dataType: 'json',//返回值类型,一般设置为json success: function (data)//服务器成功响应处理函数 { //由于ajaxFileUpload把原来的file元素替换成新的file元素,所以之前绑定的change事件就失效了,需要重新绑定一下 $("#imgFile").change(function () { uploadFacePhoto(); }) if (data.error == 0) { $("#articleFacePhotoImg").attr("src", data.url); } else { alert(data.message); } } }); } //绑定文章封面文件域改变事件 $("#imgFile").change(function () { uploadFacePhoto(); }); //点击实现上传 //$("#btnUp").click(function () { // uploadFacePhoto(); //}); </script>
//后台实现:
/// <summary> /// 上传文件 /// </summary> /// <returns></returns> public ActionResult UploadImg(HttpPostedFileBase imgFile,string dir) { //定义允许上传的文件的扩展名 Hashtable extTable = new Hashtable(); extTable.Add("image", "gif,jpg,jpeg,png,bmp"); extTable.Add("flash", "swf,flv"); extTable.Add("media", "swf,flv,mp3,wav,wma,wmv,mid,avi,mpg,asf,rm,rmvb"); extTable.Add("file", "doc,docx,xls,xlsx,ppt,htm,html,txt,zip,rar,gz,bz2"); if(String.IsNullOrEmpty(dir)) { dir = "image"; } if(!extTable.ContainsKey(dir))//如果不包含 { return Content(JsonConvert.SerializeObject(new { error = 1, message = "文件格式不正确" })); } if (imgFile == null) { return Content(JsonConvert.SerializeObject(new { error=1,message="上传文件大小超过限制"})); } string fileName = imgFile.FileName; string fileExt = Path.GetExtension(fileName).ToLower(); if (String.IsNullOrEmpty(fileExt) || Array.IndexOf(((String)extTable[dir]).Split(','), fileExt.Substring(1).ToLower()) == -1) { return Content(JsonConvert.SerializeObject(new { error = 1, message = "上传文件扩展名是不允许的扩展名。\n只允许" + ((String)extTable[dir]) + "格式" })); } //创建文件夹 string dirPath = "/Files/" + dir + "/"; if (!Directory.Exists(Request.MapPath(dirPath))) { //不存在就创建 Directory.CreateDirectory(Request.MapPath(dirPath)); } // string newFileName = DateTime.Now.ToString("yyyyMMddHHmmss_ffff") + fileExt;//注意这个写法文件名会有重复,要想不重复请使用Guid或其它方法。有坑需谨慎 imgFile.SaveAs(Request.MapPath(dirPath + newFileName)); //判断保存的文件是否存在 if (System.IO.File.Exists(Request.MapPath(dirPath + newFileName))) { return Content(JsonConvert.SerializeObject(new { error=0,url=dirPath+newFileName})); } else { return Content(JsonConvert.SerializeObject(new { error=1,message="上传文件失败!"})); } }
ajaxfileupload.js文件链接:http://pan.baidu.com/s/1i4Xezyd 密码:om9x
----------------------上面是简单的图片文件上传演示,下面简单演示下富文本编辑器的使用-------------
前台实现:
//Html部分 <div> <!--编辑器开始--> <textarea id="editor" name="content" style="width:100%;height:100%"></textarea> <input type="button" id="btnSub" value="提交"/> </div> //JS部分 <script type="text/javascript"> $(function () { //编辑器初始化 KindEditor.ready(function (K) { window.editor = K.create('#editor', { uploadJson: '@Url.Action("UploadImg","Home")' }); }); $("#btnSub").click(function () { var articleContent = editor.html(); alert(articleContent); }); }) </script> //引入文件 <script src="~/Scripts/jquery-1.8.2.min.js"></script> <script src="~/Scripts/kindeditor/kindeditor-all-min.js"></script> <script src="~/Scripts/kindeditor/plugins/code/code.js"></script>
后台实现和上面的上传文件后台一致,下面是引入文件链接:http://pan.baidu.com/s/1o8GV1pg 密码:4uum(百度云:KindEditor文件夹)
最后来张图片吧:
百闻不如一见,百见不如一做,只有做了,才知道问题出现在哪儿,才能去解决问题。