diff --git a/packages/filesystem/src/browser/file-upload-service.ts b/packages/filesystem/src/browser/file-upload-service.ts index 9447880b7daea..277ebb4837608 100644 --- a/packages/filesystem/src/browser/file-upload-service.ts +++ b/packages/filesystem/src/browser/file-upload-service.ts @@ -254,6 +254,7 @@ export class FileUploadService { } catch (error) { uploadSemaphore.cancel(); if (!isCancelled(error)) { + this.messageService.error(nls.localize('theia/filesystem/uploadFailed', 'An error occurred while uploading a file. {0}', error.message)); throw error; } } @@ -348,6 +349,10 @@ export class FileUploadService { unregister(); if (xhr.status === 200) { resolve(); + } else if (xhr.status === 500 && xhr.statusText !== xhr.response) { + // internal error with cause message + // see packages/filesystem/src/node/node-file-upload-service.ts + reject(new Error(`Internal server error: ${xhr.response}`)); } else { reject(new Error(`POST request failed: ${xhr.status} ${xhr.statusText}`)); } diff --git a/packages/filesystem/src/node/node-file-upload-service.ts b/packages/filesystem/src/node/node-file-upload-service.ts index efd063348ecde..9687ad761bd07 100644 --- a/packages/filesystem/src/node/node-file-upload-service.ts +++ b/packages/filesystem/src/node/node-file-upload-service.ts @@ -73,7 +73,13 @@ export class NodeFileUploadService implements BackendApplicationContribution { response.status(200).send(target); // ok } catch (error) { console.error(error); - response.sendStatus(500); // internal server error + if (error.message) { + // internal server error with error message as response + response.status(500).send(error.message); + } else { + // default internal server error + response.sendStatus(500); + } } }