GeneralUtility::copyDirectory doesn't fix windows paths
While iterating a directory the resulting SplFileInfo object produce paths with windows directory separators. These are now passed to upload_copy_move without fixing the directory separators.
Furthermore an SplFileInfo object is passed to upload_copy_move instead of a string (which the function signature requires). Because of PHP type juggling this is converted to a string which happens to result in the path and name of the file.