接口说明
Web Uploader的所有代码都在一个内部闭包中,对外暴露了唯一的一个变量WebUploader
,所以完全不用担心此框架会与其他框架冲突。
内部所有的类和功能都暴露在WebUploader
名字空间下面。
Demo中使用的是WebUploader.create
方法来初始化的,实际上可直接访问WebUploader.Uploader
。
具体有哪些内部类,请转到API页面。
事件
Uploader
实例具有Backbone同样的事件API:on
,off
,once
,trigger
。
除了通过on
绑定事件外,Uploader
实例还有一个更便捷的添加事件方式。
如同Document Element
中的onEvent一样,他的执行比on
添加的handler
的要晚。如果那些handler
里面,有一个return false
了,此onEvent
里面是不会执行到的。
Hook
Uploader
里面的功能被拆分成了好几个widget
,由command
机制来通信合作。
如下,filepicker在用户选择文件后,直接把结果request
出去,然后负责队列的queue
widget,监听命令,根据配置项中的accept
来决定是否加入队列。
Uploader.regeister
方法用来说明,该widget
要响应哪些命令,并指定由什么方法来响应。上面的例子,当add-file
命令派送时,内部的addFiles
成员方法将被执行到,同一个命令,可以指定多次handler
, 各个handler
会按添加顺序依次执行,且后续的handler
,不能被前面的handler
截断。
handler
里面可以是同步过程,也可以是异步过程。是异步过程时,只需要返回一个promise
对象即可。存在异步可能的request调用者会等待此过程结束后才继续。举个例子,webuploader运行在flash模式下时,需要等待flash加载完毕后才能算ready了,此过程为一个异步过程,目前的做法是如下:
目前webuploader内部有很多种command,在此列出比较重要的几个。
名称 |
参数 |
说明 |
add-file |
files: File对象或者File数组 |
用来向队列中添加文件。 |
before-send-file |
file: File对象 |
在文件发送之前request,此时还没有分片(如果配置了分片的话),可以用来做文件整体md5验证。 |
before-send |
block: 分片对象 |
在分片发送之前request,可以用来做分片验证,如果此分片已经上传成功了,可返回一个rejected promise来跳过此分片上传 |
after-send-file |
file: File对象 |
在所有分片都上传完毕后,且没有错误后request,用来做分片验证,此时如果promise被reject,当前文件上传会触发错误。 |
文件组织
webuploader由很多独立的小文件组成。每个文件都是以AMD规范组织的,方便类似与RequireJS之类的库直接使用。
如lib/file.js
下面是目前的目录结构及说明。
评论
如果是讨论技术问题或者报告bug,请最好还是新建一个issue展开讨论,以免你提出的问题石沉大海。
点此进入issues列表页。