jquery uploadify如何取消已上传成功文件


Posted in Javascript onFebruary 08, 2017

如何使用uploadify进行文件上传,各位都能够在网上找到,但是需要注意版本号.我这里仅仅说一下,在文件已经成功上传到服务器之后,如何取消文件的上传.

我使用的是自动上传,即将'auto'属性设置为true.

1.首先我们要设置cancelmg属性,即设置文件上传成功后,显示在文件上的关闭图片.这里需要修改对应CSS中的代码

.uploadify-queue-item .cancel a { 
  background: url('../img/uploadify-cancel.png') 0 0 no-repeat; 
  float: right; 
  height: 16px; 
  text-indent: -9999px; 
  width: 16px; 
}

将这里url中的uploadify-cancel.png的地址设置正确.这时可以看到上传的文件后会显示对应的取消关闭图片.当然我们不修改源码,将图片放置在img文件夹下也可以.

2.当我们使用自动上传,点击文件对应上的关闭,这时是不会触发'onCancel'事件的,(onCancel事件是针对不自动上传时进行触发的)所以我们需要需要绑定对应的事件到取消图片上.

3.当每个图片上传成功之后,都会触发”onUploadSuccess”事件.所以我们将绑定操作写在onUploadSuccess函数中.

4.代码如下:

onUploadSuccess:function(file, data, response) { 
    var cancel=$('#fileQueue .uploadify-queue-item[id="' + file.Id + '"]').find(".cancel a"); 
if (cancel) { 
  cancel.attr("deletefileid",file.id); 
  cancel.click(function () { 
    //我的处理逻辑 
    //1.首先调用ajax 传递文件名到后台,后台删除对应的文件(这个我就不写了) 
    //2.从后台返回的为true,表明删除成功;返回false,表明删除失败 
     var deletefileid = cancel.attr("deletefileid"); 
     $("#uploadify").uploadify("cancel",deletefileid);//将上传队列中的文件删除. 
  }); 
} 
}

5.$("#uploadify").uploadify("cancel",deletefileid); 这会调用uploadify中的cancel方法,但是cancel方法中有一个问题,通过查看源码,发现cancel方法并没有将队列中的文件删除,只是在前台删除了对应的div.这样就会导致,假设当我上传文件A,已经上传成功,这时我点击删除图片,取消文件A的上传,这时前台A文件消失,但是假如我再次上传文件A,会提示我已经上传过文件A了,这显然是有问题的.
其实,uploadify的cancel方法就是针对还没有上传到服务器的文件,这时点击取消,调用cancel方法,即cancel方法针对的是还没有上传到服务器的文件.

这时我们需要修改源码将对应需要删除的文件在队列中进行删除.

cancel : function(fileID, supressEvent) { 
 
  var args = arguments; 
 
  this.each(function() { 
    // Create a reference to the jQuery DOM object 
    var $this    = $(this), 
      swfuploadify = $this.data('uploadify'), 
      settings   = swfuploadify.settings, 
      delay    = -1; 
 
    if (args[0]) { 
      // Clear the queue 
      if (args[0] == '*') { 
        var queueItemCount = swfuploadify.queueData.queueLength; 
        $('#' + settings.queueID).find('.uploadify-queue-item').each(function() { 
          delay++; 
          if (args[1] === true) { 
            swfuploadify.cancelUpload($(this).attr('id'), false); 
          } else { 
            swfuploadify.cancelUpload($(this).attr('id')); 
          } 
          $(this).find('.data').removeClass('data').html(' - Cancelled'); 
          $(this).find('.uploadify-progress-bar').remove(); 
          $(this).delay(1000 + 100 * delay).fadeOut(500, function() { 
            $(this).remove(); 
          }); 
        }); 
        swfuploadify.queueData.queueSize  = 0; 
        swfuploadify.queueData.queueLength = 0; 
        // Trigger the onClearQueue event 
        if (settings.onClearQueue) settings.onClearQueue.call($this, queueItemCount); 
      } else { 
        for (var n = 0; n < args.length; n++) { 
          swfuploadify.cancelUpload(args[n]); 
          /* 添加代码 */ 
          delete swfuploadify.queueData.files[args[n]]; 
          swfuploadify.queueData.queueLength = swfuploadify.queueData.queueLength - 1; 
          /* 添加结束 */ 
          $('#' + args[n]).find('.data').removeClass('data').html(' - Cancelled'); 
          $('#' + args[n]).find('.uploadify-progress-bar').remove(); 
          $('#' + args[n]).delay(1000 + 100 * n).fadeOut(500, function() { 
            $(this).remove(); 
          }); 
        } 
      } 
    } else { 
      var item = $('#' + settings.queueID).find('.uploadify-queue-item').get(0); 
      $item = $(item); 
      swfuploadify.cancelUpload($item.attr('id')); 
      $item.find('.data').removeClass('data').html(' - Cancelled'); 
      $item.find('.uploadify-progress-bar').remove(); 
      $item.delay(1000).fadeOut(500, function() { 
        $(this).remove(); 
      }); 
    } 
  }); 
 
},

总结

以上是我针对如何取消已经上传成功的文件的方法.当然如果不是自动上传,那么不用修改uploadify,直接删除就好。

Javascript 相关文章推荐
JavaScript中String和StringBuffer的速度之争
Apr 01 Javascript
能说明你的Javascript技术很烂的五个原因分析
Oct 28 Javascript
用Mootools获得操作索引的两种方法分享
Dec 12 Javascript
javascript制作loading动画效果 loading效果
Jan 14 Javascript
js正则表达式中test,exec,match方法的区别说明
Jan 29 Javascript
Javascript中级语法快速入手
Jul 30 Javascript
详解js中常规日期格式处理、月历渲染和倒计时函数
Dec 28 Javascript
Bootstrap入门教程一Hello Bootstrap初识
Mar 02 Javascript
Vue Socket.io源码解读
Feb 07 Javascript
vue :src 文件路径错误问题的解决方法
May 15 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
Nov 13 Javascript
JavaScript实现网页跨年倒计时
Dec 02 Javascript
js/jquery控制页面动态加载数据 滑动滚动条自动加载事件的方法
Feb 08 #Javascript
用move.js库实现百叶窗特效
Feb 08 #Javascript
浅谈js停止事件冒泡 阻止浏览器的默认行为(阻止超连接 #)
Feb 08 #Javascript
Move.js入门
Feb 08 #Javascript
jquery ajaxfileupload异步上传插件使用详解
Feb 08 #Javascript
详解Javascript百度地图接口开发文档中的类和方法
Feb 07 #Javascript
简单实现bootstrap导航效果
Feb 07 #Javascript
You might like
PHP限制页面只能在微信自带浏览器访问的代码
2014/01/15 PHP
PHP递归调用数组值并用其执行指定函数的方法
2015/04/01 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
php实现微信扫码自动登陆与注册功能
2016/09/22 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
php插件Xajax使用方法详解
2017/08/31 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
document.getElementById为空或不是对象的解决方法
2010/01/24 Javascript
javascript简单实现表格行间隔显示颜色并高亮显示
2013/11/29 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
JavaScript对IE操作的经典代码(推荐)
2014/03/10 Javascript
加载列表时jquery获取ul中第一个li的属性
2014/11/02 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
javascript 单例模式详解及简单实例
2017/02/14 Javascript
Vue 组件间的样式冲突污染
2017/08/31 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
Vue中使用clipboard实现复制功能
2018/09/05 Javascript
js实现删除li标签一行内容
2019/04/16 Javascript
详解JavaScript 作用域
2020/07/14 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
Python常见文件操作的函数示例代码
2011/11/15 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
Python3简单爬虫抓取网页图片代码实例
2019/08/26 Python
jupyter notebook清除输出方式
2020/04/10 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
python装饰器三种装饰模式的简单分析
2020/09/04 Python
CSS3实现全景图特效示例代码
2018/03/26 HTML / CSS
纯HTML5+CSS3制作生日蛋糕(代码易懂)
2016/11/16 HTML / CSS
BONIA波尼亚新加坡官网:皮革手袋,鞋类和配件
2016/08/25 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
麦当劳辞职信范文
2014/01/18 职场文书
大学生推广普通话演讲稿
2014/09/21 职场文书
工人先进事迹材料
2014/12/26 职场文书
2016秋季运动会前导词
2015/11/25 职场文书
2016年党员干部公开承诺书
2016/03/24 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js