Upload/UploadAsync method does actually accept a normal Windows path with a drive letter, just like common .NET methods such as File.OpenRead(...).
For example:
await client.UploadAsync(@"D:\root\testfile.exe", "/root/Desktop", TraversalMode.Recursive, TransferMethod.Copy,ActionOnExistingFiles.ThrowException);
Alternatively, you can even use forward slashes instead of backslashes:
await client.UploadAsync("D:/root/testfile.exe", "/root/Desktop", TraversalMode.Recursive, TransferMethod.Copy,ActionOnExistingFiles.ThrowException);