百度webuploader如何实现秒传与断点续传
2024-09-05 01:25:56
因为这是小众需求,所以默认没有做在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
最新文章
- <;<;<; ajaxfileupload介绍
- HBase的伪分布式安装(原创)
- Web前端入门了解
- CommonJS 模块规范 1.1.1
- javaWeb 使用jsp开发 html过滤标签
- HDUOJ----1234 开门人和关门人(浙江大学考研题)
- 组合方法(ensemble method) 与adaboost提升方法
- NET Remoting 示例
- java中访问mysql数据库中的表结构信息
- 成为JavaGC专家(2)—如何监控Java垃圾回收机制
- IntelliJ插件安装
- trove datastore 浅析
- UVA-804 模拟
- 【BZOJ1877】晨跑(费用流)
- jpa使用过程中出现问题记录[持续更新]
- 【ASP】session实现购物车
- qsort()函数详解
- python 全栈开发,Day87(ajax登录示例,CSRF跨站请求伪造,Django的中间件,自定义分页)
- 廖雪峰网站:学习python函数—调用函数(一)
- linux下grep命令详解