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 相关文章推荐
扩展String功能方法
Sep 22 Javascript
Javascript的时间戳和php的时间戳转换注意事项
Apr 12 Javascript
jquery制作搜狐快站页面效果示例分享
Feb 21 Javascript
JS原型链怎么理解
Jun 27 Javascript
js中的关联数组与普通数组详解
Jul 27 Javascript
JS实现倒计时(天数、时、分、秒)
Nov 16 Javascript
利用JS轻松实现获取表单数据
Dec 06 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
Dec 18 Javascript
react-router 路由切换动画的实现示例
Dec 03 Javascript
VUE兄弟组件传值操作实例分析
Oct 26 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
Feb 23 Vue.js
原生Javascript+HTML5一步步实现拖拽排序
Jun 12 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 加密解密内部算法
2010/04/22 PHP
Jquery选择器 $实现原理
2009/12/02 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
JS实现超简单的鼠标拖动效果
2015/11/02 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
JS实现列表的响应式排版(推荐)
2016/09/01 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
jQuery继承extend用法详解
2016/10/10 Javascript
jQuery实现获取隐藏div高度的方法示例
2017/02/09 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
vue页面切换项目实现转场动画的方法
2019/11/12 Javascript
vue 实现 rem 布局或vw 布局的方法
2019/11/13 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
2020/04/06 Javascript
js+canvas实现画板功能
2020/09/13 Javascript
在Python中使用SQLite的简单教程
2015/04/29 Python
python基础入门学习笔记(Python环境搭建)
2016/01/13 Python
python获取list下标及其值的简单方法
2016/09/12 Python
Python代码缩进和测试模块示例详解
2018/05/07 Python
浅谈pycharm使用及设置方法
2019/09/09 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
tensorflow 初始化未初始化的变量实例
2020/02/06 Python
HTML5之SVG 2D入门9—蒙板及mask元素介绍与应用
2013/01/30 HTML / CSS
管理站站长岗位职责
2013/11/27 职场文书
上班早退检讨书
2014/01/09 职场文书
模范家庭事迹材料
2014/02/10 职场文书
学生会宣传部部长竞选演讲稿
2014/04/25 职场文书
党员领导干部承诺书
2014/05/28 职场文书
寝室长工作失责检讨书
2014/10/06 职场文书
律师函格式范本
2015/05/27 职场文书
小学六年级班主任工作经验交流材料
2015/11/02 职场文书
python中的getter与setter你了解吗
2022/03/24 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python