diff --git a/packages/upload/src/ajax.js b/packages/upload/src/ajax.js index e5744c4c881..37dc7fbcc76 100644 --- a/packages/upload/src/ajax.js +++ b/packages/upload/src/ajax.js @@ -36,7 +36,7 @@ export default function upload(option) { const xhr = new XMLHttpRequest(); const action = option.action; - if (xhr.upload) { + if (xhr.upload && option.onProgress(false) !== false) { xhr.upload.onprogress = function progress(e) { if (e.total > 0) { e.percent = e.loaded / e.total * 100; diff --git a/packages/upload/src/index.vue b/packages/upload/src/index.vue index e73565359fe..3748ca88629 100644 --- a/packages/upload/src/index.vue +++ b/packages/upload/src/index.vue @@ -173,10 +173,14 @@ export default { this.onChange(file, this.uploadFiles); }, handleProgress(ev, rawFile) { - const file = this.getFile(rawFile); - this.onProgress(ev, file, this.uploadFiles); - file.status = 'uploading'; - file.percentage = ev.percent || 0; + if (ev === false) { + return this.onProgress(); + } else { + const file = this.getFile(rawFile); + this.onProgress(ev, file, this.uploadFiles); + file.status = 'uploading'; + file.percentage = ev.percent || 0; + } }, handleSuccess(res, rawFile) { const file = this.getFile(rawFile); diff --git a/packages/upload/src/upload.vue b/packages/upload/src/upload.vue index 200ca0ac919..4fc1f236ab9 100644 --- a/packages/upload/src/upload.vue +++ b/packages/upload/src/upload.vue @@ -142,7 +142,7 @@ export default { filename: this.name, action: this.action, onProgress: e => { - this.onProgress(e, rawFile); + return this.onProgress(e, rawFile); }, onSuccess: res => { this.onSuccess(res, rawFile);