ExtJS中可以使用表单进行文件上传,并且通过配置waitMsg来显示上传进度信息,但是在实际应用中,我们往往不是通过表单来上传文件,而是通过ajax来进行异步文件上传,那么这个时候该如何监听上传进度呢?答案马上揭晓。
在异步上传中要显示实际进度,通常我们会使用XMLHttpRequest的onprogress回调,在extjs中,同样的可以这样子做。
我们可以覆盖ajax中openRequest方法,返回xhr对象,可以监听XMLHttpRequest的onprogress回调来显示进度条:

Ext.override(Ext.data.request.Ajax, {
openRequest: function (options) {
var xhr = this.callParent(arguments);
if (options.progress) {
xhr.upload.onprogress = options.progress;
}
return xhr;
}
});
之后使用ajax上传数据时,配置progress回调函数即可获取到数据传输进度,示例代码见截图。
上传效果:

注意:使用ajax上传时要设置好Content-Type!

另外贴上跨域上传的代码(图):
