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 相关文章推荐
使用JQuery和s3captche实现一个水果名字的验证
Aug 14 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
Dec 02 Javascript
jQuery操作input值的各种方法总结
Nov 21 Javascript
js文件Cookie存取值示例代码
Feb 20 Javascript
技术男用来对妹子表白的百度首页
Jul 23 Javascript
JavaScript验证电子邮箱的函数
Aug 22 Javascript
JavaScript设置表单上传时文件个数的方法
Aug 11 Javascript
vue bus全局事件中心简单Demo详解
Feb 26 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
Aug 01 Javascript
如何使用vue slot创建一个模态框的实例代码
May 24 Javascript
jQuery+ajax实现用户登录验证
Sep 13 jQuery
vant 解决tab切换插件标题样式自定义的问题
Nov 13 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
php获取远程文件内容的函数
2015/11/02 PHP
php验证码生成器
2017/05/24 PHP
php实现数组纵向转横向并过滤重复值的方法分析
2017/05/29 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
2020/02/29 PHP
通过PHP实现用户注册后邮箱验证激活
2020/11/10 PHP
有效的捕获JavaScript焦点的方法小结
2009/10/08 Javascript
js中各浏览器中鼠标按键值的差异
2011/04/07 Javascript
jquery下jstree简单应用 - v1.0
2011/04/14 Javascript
输入密码检测大写是否锁定js实现代码
2012/12/03 Javascript
设为首页和收藏的Javascript代码(亲测兼容IE,Firefox,chrome等浏览器)
2013/11/18 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
JS获取及设置TextArea或input文本框选择文本位置的方法
2015/03/24 Javascript
javascript中indexOf技术详解
2015/05/07 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
BootstrapTable与KnockoutJS相结合实现增删改查功能【一】
2016/05/10 Javascript
jQuery实现可兼容IE6的遮罩功能详解
2017/09/19 jQuery
微信小程序时间轴实现方法示例
2019/01/14 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
js实现贪吃蛇游戏(简易版)
2020/09/29 Javascript
Win10下Python环境搭建与配置教程
2016/11/18 Python
PyCharm+Qt Designer+PyUIC安装配置教程详解
2019/06/13 Python
Python爬取腾讯视频评论的思路详解
2019/12/19 Python
Python基于requests库爬取网站信息
2020/03/02 Python
HTML5实现一个能够移动的小坦克示例代码
2013/09/02 HTML / CSS
德国运动营养和健身网上商店:Myprotein.de
2018/07/18 全球购物
澳大利亚有机化妆品网上商店:The Well Store
2020/02/20 全球购物
家庭教育先进个人事迹材料
2014/01/24 职场文书
村党的群众路线教育实践活动工作总结
2014/10/25 职场文书
2015高考寄语集锦
2015/02/27 职场文书
施工员岗位职责范本
2015/04/11 职场文书
观看焦裕禄观后感
2015/06/09 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android