From 0236f0637b498786a9c6332289ed4d541c581a62 Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 29 Aug 2017 12:02:43 +0200 Subject: [PATCH 1/2] Fix timeout detection in web UI file upload Displays an error message on timeout. --- apps/files/js/file-upload.js | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index cae1dbdd1481..2a37b26fec66 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -253,6 +253,9 @@ OC.FileUpload.prototype = { } this.data.headers['requesttoken'] = OC.requestToken; + // prevent global error handler to kick in on timeout + this.data.allowAuthErrors = true; + var chunkFolderPromise; if ($.support.blobSlice && this.uploader.fileUploadParam.maxChunkSize @@ -340,6 +343,13 @@ OC.FileUpload.prototype = { getResponse: function() { var response = this.data.response(); if (response.errorThrown) { + if (response.errorThrown === 'timeout') { + return { + status: 0, + message: t('core', 'Upload timeout') + }; + } + // attempt parsing Sabre exception is available var xml = response.jqXHR.responseXML; if (xml.documentElement.localName === 'error' && xml.documentElement.namespaceURI === 'DAV:') { @@ -362,8 +372,20 @@ OC.FileUpload.prototype = { // likely due to internal server error response = {status: 500}; } - } else { + } else if (response.result) { response = response.result; + } else { + if (response.jqXHR.status === 0 && response.jqXHR.statusText === 'error') { + // timeout (IE11) + return { + status: 0, + message: t('core', 'Upload timeout') + }; + } + return { + status: response.jqXHR.status, + message: t('core', 'Unknown error: ') + response.jqXHR.statusText + }; } return response; }, From 5bda4ee0cc35469afade79e13a38b0c83d1cf8fb Mon Sep 17 00:00:00 2001 From: Vincent Petry Date: Tue, 29 Aug 2017 12:27:17 +0200 Subject: [PATCH 2/2] Add filename in upload timeout notification --- apps/files/js/file-upload.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/files/js/file-upload.js b/apps/files/js/file-upload.js index 2a37b26fec66..eb57101f07d7 100644 --- a/apps/files/js/file-upload.js +++ b/apps/files/js/file-upload.js @@ -346,7 +346,7 @@ OC.FileUpload.prototype = { if (response.errorThrown === 'timeout') { return { status: 0, - message: t('core', 'Upload timeout') + message: t('core', 'Upload timeout for file "{file}"', {file: this.getFileName()}) }; } @@ -379,12 +379,12 @@ OC.FileUpload.prototype = { // timeout (IE11) return { status: 0, - message: t('core', 'Upload timeout') + message: t('core', 'Upload timeout for file "{file}"', {file: this.getFileName()}) }; } return { status: response.jqXHR.status, - message: t('core', 'Unknown error: ') + response.jqXHR.statusText + message: t('core', 'Unknown error "{error}" uploading file "{file}"', {error: response.jqXHR.statusText, file: this.getFileName()}) }; } return response;