因为这是小众需求,所以默认没有做在webuploader里面,而只是提供hook接口,让用户很简单的扩展此功能。

那么,都有哪些重要的hook接口呢?

  • before-send-file 此hook在文件发送之前执行
  • before-file 此hook在文件分片(如果没有启用分片,整个文件被当成一个分片)后,上传之前执行。
  • after-send-file 此hook在文件所有分片都上传完后,且服务端没有错误返回后执行。
  • ...

对于秒传来说,其实就是文件上传前,把内容读取出来,算出md5值,然后通过ajax与服务端验证进行验证, 然后根据结果选择继续上传还是掉过上传。

像这个操作里面有两个都是异步操作,文件内容blob读取和ajax请求。所以这个handler必须是异步的,怎样告诉组件此handler是异步的呢?只需要在hanlder里面返回一个promise对象就可以了,这样webuploader就会等待此过程,监听此promise的完成事件,自动继续。

以下是此思路的简单实现。

Uploader.register({
'before-send-file': 'preupload'
}, {
preupload: function( file ) {
var me = this,
owner = this.owner,
server = me.options.server,
deferred = WebUploader.Deferred(); owner.md5File( file.source ) // 如果读取出错了,则通过reject告诉webuploader文件上传出错。
.fail(function() {
deferred.reject();
}) // md5值计算完成
.then(function( md5 ) { // 与服务安验证
$.ajax(server, {
dataType: 'json',
data: {
md5: ret
},
success: function( response ) { // 如果验证已经上传过
if ( response.exist ) {
owner.skipFile( file ); console.log('文件重复,已跳过');
} // 介绍此promise, webuploader接着往下走。
deferred.resolve();
}
});
}); return deferred.promise();
}
});

详情参考:https://github.com/fex-team/webuploader/issues/142

最新文章

  1. <<< ajaxfileupload介绍
  2. HBase的伪分布式安装(原创)
  3. Web前端入门了解
  4. CommonJS 模块规范 1.1.1
  5. javaWeb 使用jsp开发 html过滤标签
  6. HDUOJ----1234 开门人和关门人(浙江大学考研题)
  7. 组合方法(ensemble method) 与adaboost提升方法
  8. NET Remoting 示例
  9. java中访问mysql数据库中的表结构信息
  10. 成为JavaGC专家(2)—如何监控Java垃圾回收机制
  11. IntelliJ插件安装
  12. trove datastore 浅析
  13. UVA-804 模拟
  14. 【BZOJ1877】晨跑(费用流)
  15. jpa使用过程中出现问题记录[持续更新]
  16. 【ASP】session实现购物车
  17. qsort()函数详解
  18. python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)
  19. 廖雪峰网站:学习python函数—调用函数(一)
  20. linux下grep命令详解

热门文章

  1. Nginx Rewrite相关功能-防盗链
  2. 微软源码站点-C#编程指南
  3. 11-C#笔记-函数-方法
  4. 05-numpy-笔记-fliplr
  5. FileZilla 连接站点 编辑配置文件
  6. 关于ID命名 一个页面唯一
  7. freeradius client 和jradius安装编译
  8. uniform
  9. Vim Python3环境打造
  10. 安装Ruby 2.3.0