jQuery无刷新上传之uploadify简单代码


Posted in Javascript onJanuary 17, 2017

先简单的侃两句:貌似已经有两个月的时间没有写过文章了,不过仍会像以前那样每天至少有一至两个小时是泡在园子里看各位大神的文章。前些天在研究“ajax无刷新上传”方面的一些插件,用SWFUpload实现了无刷新上传的功能,不过个人觉得不是很完美。

昨天在网上找到了一个叫做uploadify的jquery上传插件,看到园子里有几篇文章也是介绍这个插件的,心想何不用这个试试。

 不过园子里的这几篇文章用到的uploadify还是以前的旧版本uploadify-v2.1.0,我在官网上下载的是uploadify-v3.1版,其中的一些参数以及调用方法也不同了,还好官网有帮助文档。

(唯一感觉不爽的一点就是这个开发包是针对php的,官网并没有.NET版本,但至少原理都是一样的,简单的修改一下就可以了。还是那句话“不仅要知其然,还要知其所以然”,知其所以然了,一切都是浮云啊)

好了,废话不多说。先上个效果图,有图有真相:

jQuery无刷新上传之uploadify简单代码

一:从官网下载开发包添加到项目中,我对这个开发包做了一个精简,删去了那些php方面的文件:

jQuery无刷新上传之uploadify简单代码

项目基本结构:

jQuery无刷新上传之uploadify简单代码

二:添加对css和js文件的引用:

jQuery无刷新上传之uploadify简单代码

注意jquery.js文件和uploadify.js文件的调用顺序。

三:Default.aspx页面的代码如下:

<head runat="server">
  <title></title>
  <link href="js/uploadify/uploadify.css" rel="stylesheet" type="text/css" />
  <script src="js/jquery-1.4.1-vsdoc.js" type="text/javascript"></script>
  <script src="js/uploadify/jquery.uploadify-3.1.js" type="text/javascript"></script>
 <script type="text/javascript">
    $(function () {
      $("#uploadify").uploadify({
        //指定swf文件
        'swf': 'js/uploadify/uploadify.swf',
        //后台处理的页面
        'uploader': 'UploadHandler.ashx',
        //按钮显示的文字
        'buttonText': '上传图片',
        //显示的高度和宽度,默认 height 30;width 120
        //'height': 15,
        //'width': 80,
        //上传文件的类型 默认为所有文件  'All Files' ; '*.*'
        //在浏览窗口底部的文件类型下拉菜单中显示的文本
        'fileTypeDesc': 'Image Files',
        //允许上传的文件后缀
        'fileTypeExts': '*.gif; *.jpg; *.png',
        //发送给后台的其他参数通过formData指定
        //'formData': { 'someKey': 'someValue', 'someOtherKey': 1 },
        //上传文件页面中,你想要用来作为文件队列的元素的id, 默认为false 自动生成, 不带#
        //'queueID': 'fileQueue',
        //选择文件后自动上传
        'auto': true,
        //设置为true将允许多文件上传
        'multi': true
      });
    });
  
  </script>
</head>
<body>
  <div>
    <%--用来作为文件队列区域--%>
    <div id="fileQueue">
    </div>
    <input type="file" name="uploadify" id="uploadify" />
    <p>
      <a href="javascript:$('#uploadify').uploadify('upload')">上传</a>| 
      <a href="javascript:$('#uploadify').uploadify('cancel')">取消上传</a>
    </p>
  </div>
</body>
</html>

四:一般处理程序UploadHandler.ashx简单代码如下:

public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "text/plain";

      //http://www.cnblogs.com/babycool/
      //接收上传后的文件
      HttpPostedFile file = context.Request.Files["Filedata"];
      //其他参数
      //string somekey = context.Request["someKey"];
      //string other = context.Request["someOtherKey"];
      //获取文件的保存路径
      string uploadPath =
        HttpContext.Current.Server.MapPath("UploadImages" + "\\");
      //判断上传的文件是否为空
      if (file != null)
      {
        if (!Directory.Exists(uploadPath))
        {
          Directory.CreateDirectory(uploadPath);
        }
        //保存文件
        file.SaveAs(uploadPath + file.FileName);
        context.Response.Write("1");
      }
      else
      {
        context.Response.Write("0");
      } 

    }

    public bool IsReusable
    {
      get
      {
        return false;
      }
    }

五:用到的参数介绍:

通过查看jquery.uploadify-3.1.js中的默认设置并参考官方文档可得知:

jQuery无刷新上传之uploadify简单代码

 参数不重新指定则保持默认:

swf:uploadify.swf 文件的相对路径

uploader:后台处理程序的相对路径

buttonText:按钮显示的文字

上传文件的类型默认为所有文件  'All Files'    '*.*'

可以通过以下两参数指定,指定方法见步骤三中的代码:

fileTypeDesc;fileTypeExts;

auto:为true表示选择文件后自动上传;如果不想自动上传,需设定为false,并通过

<a href="javascript:$('#uploadify').uploadify('upload')">上传</a>| 
 <a href="javascript:$('#uploadify').uploadify('cancel')">取消上传</a>

来指定是上传还是取消上传;

multi:设置为true将允许多文件上传;

method: 提交方式Post 或Get 默认为Post;

queueSizeLimit:当允许多文件上传时,设置选择文件的个数,默认值为999 ;

另外,取消上传图片的路径是设置在css文件中的;

其他更多设置可以参考官网的帮助文档。

六:将上传完成后显示的Complete显示为中文

英文的Complete不能改成中文”,这可能是之前的版本不能进行修改。我通过查看源代码 jquery.uploadify-3.1.js找到了上传完成时显示的内容:

jQuery无刷新上传之uploadify简单代码

再参考官方的帮助文档,可以得知,在“

onUploadSuccess” 事件中可以设置上传完成后所执行的代码,则修改后的代码为:

jQuery无刷新上传之uploadify简单代码

//选择文件后自动上传
        'auto': true,
        //设置为true将允许多文件上传
        'multi': true,
        //上传成功后执行
        'onUploadSuccess': function (file, data, response) {
          $('#' + file.id).find('.data').html(' 上传完毕');

        }

还有一个需要注意的一点是:一般在设定了选择上传文件路径时比如只允许上传*.jpg;*.png;*.gif格式的图片文件,则除了指定fileTypeDesc;fileTypeExts;两个参数外,还要在服务器端即一般处理程序中再次对上传文件的文件扩展名进行判断,以防一些用户跳过客户端验证上传恶意文件。

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

Javascript 相关文章推荐
基于PHP+Jquery制作的可编辑的表格的代码
Apr 10 Javascript
js动态调用css属性的小规律及实例说明
Dec 28 Javascript
完美兼容各大浏览器的jQuery仿新浪图文淡入淡出间歇滚动特效
Nov 12 Javascript
js使用cookie记录用户名的方法
Nov 26 Javascript
js获取时间函数及扩展函数的方法
Oct 30 Javascript
浅谈js中的变量名和函数名重名
Feb 13 Javascript
Agularjs妙用双向数据绑定实现手风琴效果
May 26 Javascript
利用Vue.js实现求职在线之职位查询功能
Jul 03 Javascript
关于vue.js组件数据流的问题
Jul 26 Javascript
vue.js打包之后可能会遇到的坑!
Jun 03 Javascript
原生JS封装_new函数实现new关键字的功能
Aug 12 Javascript
vue项目中播放rtmp视频文件流的方法
Sep 17 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
Jan 17 #Javascript
js处理层级数据结构的方法小结
Jan 17 #Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
Jan 17 #Javascript
JavaScript的事件机制详解
Jan 17 #Javascript
js判断手机号是否正确并返回的实现代码
Jan 17 #Javascript
深入理解javascript中的 “this”
Jan 17 #Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
Jan 17 #Javascript
You might like
玛琪朵 Macchiato
2021/03/03 咖啡文化
繁体中文转换为简体中文的PHP函数
2006/10/09 PHP
php access 数据连接与读取保存编辑数据的实现代码
2010/05/12 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
jquery+php实现导出datatables插件数据到excel的方法
2015/07/06 PHP
PHP内置加密函数详解
2016/11/20 PHP
Laravel 验证码认证学习记录小结
2019/12/20 PHP
JQuery 选择和过滤方法代码总结
2010/11/19 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
原生js实现类似弹窗抖动效果
2015/04/02 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
Bootstrap基本插件学习笔记之轮播幻灯片(23)
2016/12/08 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
Vue组件创建和传值的方法
2018/08/17 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
微信小程序实现评论功能
2018/11/28 Javascript
vue element 中的table动态渲染实现(动态表头)
2019/11/21 Javascript
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
python的dataframe转换为多维矩阵的方法
2018/04/11 Python
python+selenium实现自动化百度搜索关键词
2019/06/03 Python
详解Python 重学requests发起请求的基本方式
2020/02/07 Python
Spark处理数据排序问题如何避免OOM
2020/05/21 Python
django模型类中,null=True,blank=True用法说明
2020/07/09 Python
Python局部变量与全局变量区别原理解析
2020/07/14 Python
python简单实现插入排序实例代码
2020/12/16 Python
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
艺术学院毕业生自荐信
2014/07/05 职场文书
2014年小学生教师节演讲稿范文
2014/09/10 职场文书
学校运动会报道稿
2014/09/23 职场文书
详解Python类和对象内容
2021/06/22 Python