ajaxFileUpload 上传文件
<script src="@Url.Content("~/Scripts/ajaxfileupload.js")" type="text/javascript"></script>
$("#fileimage").live("change",function () {
function ajaxFileUpload() { var allowExtention = "jpg,bmp,gif,png,jpeg";//设置可以上传的文件格式var extention = $("#fileimage").val().toString().substring($("#fileimage").val().toString().lastIndexOf(".") + 1).toLowerCase(); $("#loading").ajaxStart(function () { $(".load-pit").show(); $("#CreatePost").hide(); $("#CreatePost2").show(); $(this).show(); }).ajaxComplete(function () { $("#CreatePost2").hide(); $("#CreatePost").show(); $(this).hide(); }); if (allowExtention.indexOf(extention) > -1) { $.ajaxFileUpload({ url: '../BBS/loadImage', secureuri: false, fileElementId: 'fileimage', dataType: 'text', data: {}, success: function (data,status) { var imagePath = $("#hdMemberFileURL").val(); $(".load-pit").append("<img onmouSEOver='javascript:show(this)' data-img=" + data + " onmouseleave='javascript:hide1(this)' onclick='javascript:delete1(this)' class='loadimage' src='" + imagePath + data + "' height='60' width='60' style='margin-right:18px;margin-bottom:20px;'/>"); }, error: function (data,status,e) { alert(e); } }) } else { alert("文件格式不对!"); } return false; }
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·上面是自己写的,下面是别人写的比较详细转载自http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·
jQuery插件之ajaxFileUpload
一、ajaxFileUpload是一个异步上传文件的jQuery插件。 传一个不知道什么版本的上来,以后不用到处找了。 语法:$.ajaxFileUpload([options]) options参数说明: 1、url 上传处理程序地址。 错误提示: 1,SyntaxError: missing ; before statement错误 使用方法: 第一步:先引入jQuery与ajaxFileUpload插件。注意先后顺序,这个不用说了,所有的插件都是这样。 <script src="jquery-1.7.1.js" type="text/javascript"></script> <script src="ajaxfileupload.js" type="text/javascript"></script> 第二步:HTML代码: <body> <p><input type="file" id="file1" name="file" /></p> <input type="button" value="上传" /> <p><img id="img1" alt="上传成功啦" src="" /></p> </body> 第三步:JS代码 <script src="jquery-1.7.1.js" type="text/javascript"></script> <script src="ajaxfileupload.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $(":button").click(function () { ajaxFileUpload(); }) }) function ajaxFileUpload() { $.ajaxFileUpload ( { url: '/upload.aspx',//用于文件上传的服务器端请求地址 secureuri: false,//是否需要安全协议,一般设置为false fileElementId: 'file1',//文件上传域的ID dataType: 'json',//返回值类型 一般设置为json success: function (data,status) //服务器成功响应处理函数 { $("#img1").attr("src",data.imgurl); if (typeof (data.error) != 'undefined') { if (data.error != '') { alert(data.error); } else { alert(data.msg); } } },error: function (data,e)//服务器响应失败处理函数 { alert(e); } } ) return false; } </script> 第四步:后台页面upload.aspx代码: protected void Page_Load(object sender,EventArgs e) { HttpFileCollection files = Request.Files; string msg = string.Empty; string error = string.Empty; string imgurl; if (files.Count > 0) { files[0].SaveAs(Server.MapPath("/") + System.IO.Path.GetFileName(files[0].FileName)); msg = " 成功! 文件大小为:" + files[0].ContentLength; imgurl = "/" + files[0].FileName; string res = "{ error:'" + error + "',msg:'" + msg + "',imgurl:'" + imgurl + "'}"; Response.Write(res); Response.End(); } } 本实例完整代码下载 来一个MVC版本的实例: 控制器代码 public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult Upload() { HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files; string imgPath = ""; if (hfc.Count > 0) { imgPath = "/testUpload" + hfc[0].FileName; string PhysicalPath = Server.MapPath(imgPath); hfc[0].SaveAs(PhysicalPath); } return Content(imgPath); } } 前端视图,HTML与JS代码,成功上传后,返回图片真实地址并绑定到<img>的SRC地址 <html> <head> <script src="/jquery-1.7.1.js" type="text/javascript"></script> <script src="/ajaxfileupload.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $(":button").click(function () { if ($("#file1").val().length > 0) { ajaxFileUpload(); } else { alert("请选择图片"); } }) }) function ajaxFileUpload() { $.ajaxFileUpload ( { url: '/Home/Upload',//用于文件上传的服务器端请求地址 secureuri: false,//一般设置为false fileElementId: 'file1',//文件上传空间的id属性 <input type="file" id="file" name="file" /> dataType: 'HTML',//返回值类型 一般设置为json success: function (data,status) //服务器成功响应处理函数 { alert(data); $("#img1").attr("src",data); if (typeof (data.error) != 'undefined') { if (data.error != '') { alert(data.error); } else { alert(data.msg); } } },error: function (data,e)//服务器响应失败处理函数 { alert(e); } } ) return false; } </script> </head> <body> <p><input type="file" id="file1" name="file" /></p> <input type="button" value="上传" /> <p><img id="img1" alt="上传成功啦" src="" /></p> </body> </html> 最后再来一个上传图片且附带参数的实例:控制器代码: public class HomeController : Controller { public ActionResult Index() { return View(); } public ActionResult Upload() { NameValueCollection nvc = System.Web.HttpContext.Current.Request.Form; HttpFileCollection hfc = System.Web.HttpContext.Current.Request.Files; string imgPath = ""; if (hfc.Count > 0) { imgPath = "/testUpload" + hfc[0].FileName; string PhysicalPath = Server.MapPath(imgPath); hfc[0].SaveAs(PhysicalPath); } //注意要写好后面的第二第三个参数 return Json(new { Id = nvc.Get("Id"),name = nvc.Get("name"),imgPath1 = imgPath },"text/html",JsonRequestBehavior.AllowGet); } } Index视图代码: <html> <head> <script src="/jquery-1.7.1.js" type="text/javascript"></script> <script src="/ajaxfileupload.js" type="text/javascript"></script> <script type="text/javascript"> $(function () { $(":button").click(function () { if ($("#file1").val().length > 0) { ajaxFileUpload(); } else { alert("请选择图片"); } }) }) function ajaxFileUpload() { $.ajaxFileUpload ( { url: '/Home/Upload',//用于文件上传的服务器端请求地址 type: 'post',data: { Id: '123',name: 'lunis' },//此参数非常严谨,写错一个引号都不行 secureuri: false,//文件上传空间的id属性 <input type="file" id="file" name="file" /> dataType: 'json',data.imgPath1); alert("你请求的Id是" + data.Id + " " + "你请求的名字是:" + data.name); if (typeof (data.error) != 'undefined') { if (data.error != '') { alert(data.error); } else { alert(data.msg); } } },e)//服务器响应失败处理函数 { alert(e); } } ) return false; } </script> </head> <body> <p><input type="file" id="file1" name="file" /></p> <input type="button" value="上传" /> <p><img id="img1" alt="上传成功啦" src="" /></p> </body> </html> 此实例在显示出异步上传图片的同时并弹出自定义传输的参数。本实例下载地址 2013年1月28日,今天调试过程中发现一个问题,就是作为文件域(<input type="file">)必须要有name属性,如果没有name属性,上传之后服务器是获取不到图片的。如:正确的写法是<input type="file" id="file1" name="file1" /> 2013年1月28日,最经典的错误终于找到原因所在了。Object function (a,b){return new e.fn.init(a,b,h)} has no method 'handleError',这个是google浏览器报的错误,非常经典, 不知道是我的版本问题还是真正存在的问题。这个问题的根源经过N次上传才找到问题的根本所在。答案是:dataType参数一定要大写。如:dataType: 'HTML'。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |