jQuery插件ajaxFileUpload使用详解


Posted in Javascript onJanuary 10, 2017

ajaxFileUpload.js 很多同名的,因为做出来一个很容易。

我用的是这个:https://github.com/carlcarl/AjaxFileUpload

下载地址在这里:http://xiazai.3water.com/201701/yuanma/ajaxfileupload(3water.com).rar

AjaxFileUpload.js并不是一个很出名的插件,只是别人写好的放出来供大家用,原理都是创建隐藏的表单和iframe然后用JS去提交,获得返回值。

当初做了个异步上传的功能,选择它因为它的配置方式比较像jQuery的AJAX,我很喜欢。

评论里面说到的不行。那是因为我们用的不是同一个js。我上github搜AjaxFileUpload出来很多类似js。

ajaxFileUpload是一个异步上传文件的jQuery插件。

传一个不知道什么版本的上来,以后不用到处找了。

语法:$.ajaxFileUpload([options])

options参数说明:

1、url

  上传处理程序地址。

2、fileElementId

   需要上传的文件域的ID,即<input type="file">的ID。
3、secureuri

  是否启用安全提交,默认为false。
4、dataType

  服务器返回的数据类型。可以为xml,script,json,html。如果不填写,jQuery会自动判断。
5、success

提交成功后自动执行的处理函数,参数data就是服务器返回的数据。
6、error

  提交失败自动执行的处理函数。
7、data

  自定义参数。这个东西比较有用,当有数据是与上传的图片相关的时候,这个东西就要用到了。
8、 type

   当要提交自定义参数时,这个参数要设置成post

错误提示:

1、SyntaxError: missing ; before statement错误

如果出现这个错误就需要检查url路径是否可以访问

2、SyntaxError: syntax error错误

如果出现这个错误就需要检查处理提交操作的服务器后台处理程序是否存在语法错误

3、SyntaxError: invalid property id错误

如果出现这个错误就需要检查文本域属性ID是否存在

4、SyntaxError: missing } in XML expression错误

如果出现这个错误就需要检查文件name是否一致或不存在

5、其它自定义错误

大家可使用变量$error直接打印的方法检查各参数是否正确,比起上面这些无效的错误提示还是方便很多。

使用方法:

第一步:先引入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, status, 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, status, 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, //一般设置为false
  fileElementId: 'file1', //文件上传空间的id属性 <input type="file" id="file" name="file" />
  dataType: 'json', //返回值类型 一般设置为json
  success: function (data, status) //服务器成功响应处理函数
  {
  alert(data);
  $("#img1").attr("src", data.imgPath1);
  alert("你请求的Id是" + data.Id + " " + "你请求的名字是:" + data.name);
  if (typeof (data.error) != 'undefined') {
  if (data.error != '') {
  alert(data.error);
  } else {
  alert(data.msg);
  }
  }
  },
  error: function (data, status, 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'

2016-07-28,评论中的一个错误:TypeError: $.ajaxFileUpload is not a function   我们用的不是同一个JS,你下了别的AJAXFileUpload去了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js实现的网页颜色代码表全集
Jul 17 Javascript
javascript firefox不显示本地预览图片问题的解决方法
Nov 12 Javascript
HTML颜色选择器实现代码
Nov 23 Javascript
js多级树形弹出一个小窗口层(非常好用)实例代码
Mar 19 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
指定区域的图片自动按比例缩小的js代码(防止页面被图片撑破)
Feb 21 Javascript
JavaScript获取当前页面上的指定对象示例代码
Feb 28 Javascript
javascript中new Array()和var arr=[]用法区别
Dec 01 Javascript
vue 系列——vue2-webpack2框架搭建踩坑之路
Dec 22 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
Jan 29 Javascript
原生JS实现无缝轮播图片
Jun 24 Javascript
jquery实现广告上下滚动效果
Mar 04 jQuery
微信小程序 Button 组件详解及简单实例
Jan 10 #Javascript
jQuery zTree树插件简单使用教程
Jan 10 #Javascript
详解JS中的快速排序与冒泡
Jan 10 #Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 #Javascript
VueJs路由跳转——vue-router的使用详解
Jan 10 #Javascript
js自定义QQ菜单效果
Jan 10 #Javascript
js实现将json数组显示前台table中
Jan 10 #Javascript
You might like
如何过滤高亮显示非法字符
2006/10/09 PHP
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
模板引擎smarty工作原理以及使用示例
2014/05/25 PHP
PHP PDO和消息队列的个人理解与应用实例分析
2019/11/25 PHP
网上抓的一个特效
2007/05/11 Javascript
jQuery中的pushStack实现原理和应用实例
2015/02/03 Javascript
jQuery点击改变class并toggle及toggleClass()方法定义用法
2015/12/11 Javascript
JavaScript中的闭包
2016/02/24 Javascript
JavaScript基础重点(必看)
2016/07/09 Javascript
JavaScript实现图片轮播组件代码示例
2016/11/22 Javascript
jQuery Validate插件自定义验证规则的方法
2016/12/27 Javascript
javascript算法之二叉搜索树的示例代码
2017/09/12 Javascript
ES6中新增的Object.assign()方法详解
2017/09/22 Javascript
node.js利用mongoose获取mongodb数据的格式化问题详解
2017/10/06 Javascript
vuex 使用文档小结篇
2018/01/11 Javascript
JS非行间样式获取函数的实例代码
2018/06/05 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
js如何实现元素曝光上报
2019/08/07 Javascript
vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)
2020/07/27 Javascript
[01:13:46]iG vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python re模块的高级用法详解
2018/06/06 Python
Python Matplotlib库安装与基本作图示例
2019/01/09 Python
python多个模块py文件的数据共享实例
2019/01/11 Python
在Python中os.fork()产生子进程的例子
2019/08/08 Python
Django数据结果集序列化并展示实现过程
2020/04/22 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
柏林通行证:Berlin Pass
2018/04/11 全球购物
Qoo10台湾站:亚洲领先的在线市场
2018/05/15 全球购物
波兰最早的运动鞋精品店之一:Street Supply
2019/08/29 全球购物
VisionPros美国站:加拿大在线隐形眼镜和眼镜零售商
2020/02/11 全球购物
管道维修工岗位职责
2013/12/27 职场文书
倡议书范文格式
2014/05/12 职场文书
反腐倡廉演讲稿
2014/05/22 职场文书
2014年客房服务员工作总结
2014/11/18 职场文书
公司年夜饭通知
2015/04/25 职场文书