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 相关文章推荐
JavaScript 入门·JavaScript 具有全范围的运算符
Oct 01 Javascript
javascript的键盘控制事件说明
Apr 15 Javascript
Jquery代码实现图片轮播效果(一)
Aug 12 Javascript
JavaScript中eval函数的问题
Jan 31 Javascript
Javascript的表单与验证-非空验证
Mar 18 Javascript
详解AngularJS中ng-src指令的使用
Sep 07 Javascript
jQuery实现联动下拉列表查询框
Jan 04 Javascript
element-ui 上传图片后清空图片显示的实例
Sep 04 Javascript
每个 JavaScript 工程师都应懂的33个概念
Oct 22 Javascript
Vuejs中的watch实例详解(监听者)
Jan 05 Javascript
vue路由缓存的几种实现方式小结
Feb 02 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
Nov 12 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
星际争霸任务指南——神族
2020/03/04 星际争霸
php抓取页面与代码解析 推荐
2010/07/23 PHP
php使用pdo连接sqlite3的配置示例
2016/05/27 PHP
PHP+redis实现的悲观锁机制示例
2018/06/12 PHP
深入理解JavaScript系列(14) 作用域链介绍(Scope Chain)
2012/04/12 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
举例说明JavaScript中的实例对象与原型对象
2016/03/11 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
2017/05/17 Javascript
vue组件中使用props传递数据的实例详解
2018/04/08 Javascript
详解vue2.0 资源文件assets和static的区别
2018/11/27 Javascript
微信小程序实现banner图轮播效果
2020/06/28 Javascript
微信小程序实现canvas分享朋友圈海报
2020/06/21 Javascript
[55:56]NB vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.22
2019/09/05 DOTA
Python中的类学习笔记
2014/09/23 Python
python实现的简单FTP上传下载文件实例
2015/06/30 Python
Python 遍历列表里面序号和值的方法(三种)
2017/02/17 Python
Python中的__slots__示例详解
2017/07/06 Python
python僵尸进程产生的原因
2017/07/21 Python
python实现二叉查找树实例代码
2018/02/08 Python
python中的内置函数max()和min()及mas()函数的高级用法
2018/03/29 Python
详解Python中的四种队列
2018/05/21 Python
在python中使用requests 模拟浏览器发送请求数据的方法
2018/12/26 Python
python selenium firefox使用详解
2019/02/26 Python
python3利用Socket实现通信的方法示例
2019/05/06 Python
python3.6根据m3u8下载mp4视频
2019/06/17 Python
python字符串分割及字符串的一些常规方法
2019/07/24 Python
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
食堂厨师岗位职责
2014/08/25 职场文书
2014年教务处工作总结
2014/12/03 职场文书
2016年劳模先进事迹材料
2016/02/25 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
Redis分布式锁的7种实现
2022/04/01 Redis
GO语言异常处理分析 err接口及defer延迟
2022/04/14 Golang
MySQL实现字段分割一行转多行的示例代码
2022/07/07 MySQL