diff --git a/src/tasks/OneDriveLargeFileUploadTask.ts b/src/tasks/OneDriveLargeFileUploadTask.ts index 2716f4a22..7f069ee28 100644 --- a/src/tasks/OneDriveLargeFileUploadTask.ts +++ b/src/tasks/OneDriveLargeFileUploadTask.ts @@ -59,7 +59,9 @@ export class OneDriveLargeFileUploadTask extends LargeFileUploadTask { if (path[path.length - 1] !== "/") { path = `${path}/`; } - return encodeURI(`/me/drive/root:${path}${fileName}:/createUploadSession`); + // we choose to encode each component of the file path separately because when encoding full URI + // with encodeURI, special characters like # or % in the file name doesn't get encoded as desired + return `/me/drive/root:${path.split('/').map(p => encodeURIComponent(p)).join('/')}${encodeURIComponent(fileName)}:/createUploadSession`; } /**