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 相关文章推荐
jQuery 标题的自动翻转实现代码
Oct 14 Javascript
JavaScript模板入门介绍
Sep 26 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
Jun 09 Javascript
$.get获取一个文件的内容示例代码
Sep 11 Javascript
Jquery 模拟用户点击超链接或者按钮的方法
Oct 25 Javascript
JS实现的倒计时效果实例(2则实例)
Dec 23 Javascript
浅谈JS正则表达式的RegExp对象和括号的使用
Jul 28 Javascript
js实现交通灯效果
Jan 13 Javascript
JavaScript实现HTML5游戏断线自动重连的方法
Sep 18 Javascript
Vue常用的几个指令附完整案例
Nov 06 Javascript
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
判断JavaScript中的两个变量是否相等的操作符
Dec 21 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文件缓存类用法实例分析
2015/04/22 PHP
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题
2015/10/01 PHP
yii2实现分页,带搜索的分页功能示例
2017/01/07 PHP
php中的buffer缓冲区用法分析
2019/05/31 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
使用javascript获取flash加载的百分比的实现代码
2011/05/25 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
jQuery中eq()方法用法实例
2015/01/05 Javascript
JavaScript中Number.MIN_VALUE属性的使用示例
2015/06/04 Javascript
js实现iPhone界面风格的单选框和复选框按钮实例
2015/08/18 Javascript
基于JavaScript操作DOM常用的API小结
2015/12/01 Javascript
详解AngularJS中module模块的导入导出
2015/12/10 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
JS集成fckeditor及判断内容是否为空的方法
2016/05/27 Javascript
JavaScript实现阿拉伯数字和中文数字互相转换
2016/06/12 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
vue子组件使用自定义事件向父组件传递数据
2017/05/27 Javascript
vue中将网页打印成pdf实例代码
2017/06/15 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
封装微信小程序http拦截器过程解析
2019/08/13 Javascript
JavaScript实现与web通信的方法详解
2020/08/07 Javascript
解决vue2中使用elementUi打包报错的问题
2020/09/22 Javascript
uni-app使用countdown插件实现倒计时
2020/11/01 Javascript
iview实现动态表单和自定义验证时间段重叠
2021/01/10 Javascript
深入解析Python设计模式编程中建造者模式的使用
2016/03/02 Python
用Python实现筛选文件脚本的方法
2018/10/27 Python
django项目登录中使用图片验证码的实现方法
2019/08/15 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
利用django创建一个简易的博客网站的示例
2020/09/29 Python
基于css3实现漂亮便签样式
2013/03/18 HTML / CSS
小学生推普周国旗下讲话稿
2014/09/21 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
2014年管理工作总结
2014/11/22 职场文书
pytorch DataLoader的num_workers参数与设置大小详解
2021/05/28 Python
JAVA API 实用类 String详解
2021/10/05 Java/Android