webuploader的一些体验
WebUploader是由Baidu WebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。支持大文件分片并发上传。
具体api文档参考:http://fex.baidu.com/webuploader/doc/index.html
以下是最近使用中遇到的一些坑,欢迎大佬吐槽和纠正。
1、uploader初始化时,uploader的 events 都会被执行一遍。因此,若是要使用uploadFinished监听文件上传结束,然后提交表单,可能会出错。
2、在文件服务器不支持批量上传时,uploader开启多个线程上传会出错。原因是在不支持批量上传时采用的策略是 文件初始化->上传
由于文件服务器为每个文件分配了唯一的存放地址,因此每个文件上传前都需要修改uploader.options.server 如果一个文件在上传前,另一个线程里的文件修改了 server 地址,那么前一个文件就会上传失败。此时用单线程较为稳妥。
3、自动上传的问题。webuploader支持自动上传,也支持分片上传,但是在设置了自动上传的情况下无法分片上传(具体原因不知)。
4、暂停和继续上传的问题。upload.stop(file)有效,但是暂停后无法继续上传。可以使用 upload.stop(true)/upload.upload() 实现对整个队列的暂停/开始。
5、相同文件无法重复上传。解决办法是 uploader.destroy() -> new uploader
6、
![](https://images2017.cnblogs.com/blog/1149111/201709/1149111-20170913205843297-1997409215.png)
对图中上传队列的文件进行删除操作。uploader.removeFile(file, true) 执行后 uploader.getFiles() 并没有发生变化。原因是 getFiles() 在不传递参数的时候返回的是所有状态的文件。包括:
- inited 初始状态
- queued 已经进入队列, 等待上传
- progress 上传中
- complete 上传完成。
- error 上传出错,可重试
- interrupt 上传中断,可续传。
- invalid 文件不合格,不能重试上传。会自动从队列中移除。
- cancelled 文件被移除