我正在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。
同样,此解决方案是一种冲突。如果有人可以发布非垃圾修复程序,请这样做。