有没有办法取消dojo中正在进行的上载?

有没有办法取消dojo中正在进行的上载?,dojo,Dojo,我有一个文件上传程序,可以处理非常大的文件。很多时候,用户会取消上传。似乎没有任何方法可以让浏览器取消正在处理它的XHR POST。因此,progress和complete事件触发的时间要晚得多,上传实际上已经完成。大概在上传器的某个地方嵌入了一个XHR对象,我可以调用abort,但我在API文档或上传器对象的控制台转储中看不到任何东西。如果您的目标是只支持HTML5上传器(而不是Iframe或Flash版本),那么您可以这样做: 使用以下内容创建一个新的uploader小部件(代码未经测试,

我有一个文件上传程序,可以处理非常大的文件。很多时候,用户会取消上传。似乎没有任何方法可以让浏览器取消正在处理它的XHR POST。因此,progress和complete事件触发的时间要晚得多,上传实际上已经完成。大概在上传器的某个地方嵌入了一个XHR对象,我可以调用abort,但我在API文档或上传器对象的控制台转储中看不到任何东西。

如果您的目标是只支持HTML5上传器(而不是Iframe或Flash版本),那么您可以这样做:

  • 使用以下内容创建一个新的uploader小部件(代码未经测试,可能需要一些调整):
define(['dojo/_base/declare','dojox/form/Uploader'],函数(declare,Uploader){
返回声明([Uploader]{
xhrRequest:null,
createXhr:function(){
this.xhrequest=this.inherited(参数);
返回此.xhrequest;
},
取消:函数(){
if(this.xhrequest&&this.xhrequest.abort){
this.xhrequest.abort();
}
}
});

});您使用的是哪种特定的文件上传程序(包括版本)?我使用的是Dojo 1.10.2上传程序的HTML5插件。您的意思是您使用的是
dojox.form.uploader
?或者你是否使用
dojox.form.uploader.\u HTML5
制作了自己的上传程序?谢谢Ben。我没有很多扩展Dojo的经验。非常确定我已经正确设置了新的小部件,但是当我使用自定义小部件在所选文件上启动上载时,我得到了“无法读取未定义的属性'send'”。有什么想法吗?明白了。上述代码有两个问题。我需要在createXhr中返回xhrRequest,cancel方法称为abort not cancel。谢谢,我修复了答案谢谢。我投了更高的票,但显然我还没有足够的票数来计算。我想你需要15%的声誉。但是你可以把你的问题标记为aswered;)