Upload copies the file with src path to the dst path.
If the destination directory does not exist, it is created.
If the destination path exist and is not a regular file an error is returned.
If it exist and is a file, the file is overwritten if it's not the same.