jQuery异步上传文件插件ajaxFileUpload详细介绍


Posted in Javascript onMay 19, 2015

一、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'。

Javascript 相关文章推荐
在IE浏览器中resize事件执行多次的解决方法
Jul 12 Javascript
JavaScript模板入门介绍
Sep 26 Javascript
解析瀑布流布局:JS+绝对定位的实现
May 08 Javascript
JS获取农历日期具体实例
Nov 14 Javascript
javascript实现倒计时N秒后网页自动跳转代码
Dec 11 Javascript
Node.js实现批量去除BOM文件头
Dec 20 Javascript
Node.js 学习笔记之简介、安装及配置
Mar 03 Javascript
javascript从定义到执行 你不知道的那些事
Jan 04 Javascript
JavaScript设计模式之单体模式全面解析
Sep 09 Javascript
利用jquery给指定的table动态添加一行、删除一行的方法
Oct 12 Javascript
使用watch监听路由变化和watch监听对象的实例
Feb 24 Javascript
JS异步宏队列与微队列原理区别详解
Jul 02 Javascript
JQuery插件ajaxfileupload.js异步上传文件实例
May 19 #Javascript
7个有用的jQuery代码片段分享
May 19 #Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
May 19 #Javascript
javascript检测两个数组是否相似
May 19 #Javascript
10条建议帮助你创建更好的jQuery插件
May 18 #Javascript
原生js实现的贪吃蛇网页版游戏完整实例
May 18 #Javascript
JQuery中层次选择器用法实例详解
May 18 #Javascript
You might like
PHP求小于1000的所有水仙花数的代码
2012/01/10 PHP
分享10段PHP常用代码
2015/11/11 PHP
Yii使用技巧大汇总
2015/12/29 PHP
Laravel实现构造函数自动依赖注入的方法
2016/03/16 PHP
php微信高级接口群发 多客服
2016/06/23 PHP
javascript下阻止表单重复提交、防刷新、防后退
2007/08/17 Javascript
jQuery中:eq()选择器用法实例
2014/12/29 Javascript
jQuery实现首页图片淡入淡出效果的方法
2015/06/10 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
JSON与String互转的实现方法(Javascript)
2016/09/27 Javascript
JavaScript遍历Json串浏览器输出的结果不统一问题
2016/11/03 Javascript
基于vue+ bootstrap实现图片上传图片展示功能
2017/05/17 Javascript
解决IE7中使用jQuery动态操作name问题
2017/08/28 jQuery
vue组件父与子通信详解(一)
2017/11/07 Javascript
微信小程序实现鼠标拖动效果示例
2017/12/01 Javascript
微信小程序左滑删除功能开发案例详解
2018/11/12 Javascript
jQuery实现上下滚动公告栏详细代码
2018/11/21 jQuery
简单了解vue中父子组件如何相互传递值(基础向)
2019/07/12 Javascript
[28:42]Ti4正赛VG vs NEWBEE1
2014/07/19 DOTA
在Windows8上的搭建Python和Django环境
2014/07/03 Python
python实现域名系统(DNS)正向查询的方法
2016/04/19 Python
Python算法应用实战之栈详解
2017/02/04 Python
windows下搭建python scrapy爬虫框架步骤
2018/12/23 Python
python lambda表达式(匿名函数)写法解析
2019/09/16 Python
详解Python的爬虫框架 Scrapy
2020/08/03 Python
基于Python实现粒子滤波效果
2020/12/01 Python
什么是规则表达式
2012/05/03 面试题
老教师工作总结的自我评价
2013/09/27 职场文书
致裁判员加油稿
2014/02/08 职场文书
大学生优秀自荐信范文
2014/02/25 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
爱国主义教育活动总结
2014/05/07 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
营销计划书范文
2015/01/17 职场文书
公司辞职信模板
2015/05/13 职场文书
分享一些Java的常用工具
2021/06/11 Java/Android