上传单个分块文件时,重试过程出现问题

时间:2019-06-19 16:26:58

标签: jquery file-upload jquery-file-upload blueimp

我正在https://github.com/blueimp/jQuery-File-Upload/wiki/Chunked-file-uploads#automatic-resume处实现自动简历,这需要处理fail方法。

在失败的情况下,似乎stop处理程序方法中的line 956 in jquery.fileupload.js触发了always处理程序。 _active property is decremented设为0,即使我正在处理fail方法,在重试代码中setTimeout调用和data.submit()调用之间的时间间隔内,上传被视为已停止,并且全局进度条减少为0。这导致进度条有点“闪烁”。

我尝试将recalculateProgress设置为false,但似乎无法解决此问题。它确实防止了全局进度条的值递减(line 886 in jquery.fileupload.js),但是,always方法触发了jquery.fileupload-ui.js line 337中的stop处理程序,该处理程序将UI元素的进度设置为0

编辑:有一个解决此问题的补丁程序。如果您在retry方法期间操作_active属性,则可以欺骗always方法以使失败的上载仍然处于活动状态。在初始失败调用期间将_active递增,然后在执行数据的方法期间将_active递减(以使其返回其真实的活动计数)。submit将解决此问题。 这仅适用于单个文件上传!

例如,如果失败:_active = 1,则将其递增,使_active = 2。 always处理程序将立即触发并将其递减,因此_active = 1。这将防止always方法触发停止处理程序。重试处理程序的超时方法执行后,再次将_active递减,将其拉低至0-然后像往常一样调用data.submit(),这会将_active递增回1。

同样,此解决方案是一种冲突。如果有人可以发布非垃圾修复程序,请这样做。

0 个答案:

没有答案