最近用webuploader做了一个多文件和大文件分片上传的功能,将其中遇到的一些坑总结一下
情景一:将三个文件加入队列,然后remove其中一个,再获取剩余的2个进行上传,结果getFiles时,实际还是获得了三个;
solve: api 上说 getFiles() 是获取所有的文件,同时还可以获取相应状态的文件(inited
初始状态、queued
已经进入队列,等待上传、progress
上传、 complete
上传完成、error
上传出错,可重试、interrupt
上传中断,可续传、invalid
文件不合格,不能重试上传,会自动从队列中移 除、cancelled
文件被移除。),所以获得文件时加上inited状态就可以了,getFiles('inited')
情景二:多个文件上传时,生成的guid和md5值是不同的,可是通过formData传到后台结果都是一样的。
solve: 首先添加到formData中的guid和md5Value属性是全局变量,所以可以在进行多文件上传时,先将guid和md5Value属性添加file对象中,每循环一次,在file对象中获取对应的guid和md5Value属性 重新给formData中的guid和md5Value属性赋值,本以为这样就解决了,结果测试后传到后台的值还是一样,这是造成的原因就只有可能是Uploader.upload()这个方法的问题了,后面想了一个蠢方法,没循环一次,sleep 1秒在进行下一次循环,经测试得到的结果是自己想要的。(这是治标没治本,欢迎大神给出更好的解决办法)