Not providing all the information in your problem description makes answering more like guessing!
As a first step: add some error checking to your code!
Then take that string concatenation operator out of the picture. A "+" in a file name may be causing the problem. You said "I am running same script on other servers and it works fine." You need to stop believing this and start adding code to your scripts that expects to encounter errors and handle them in a way that helps you figure out what's gone wrong.
At a minimum, try adding this to replace the existing $objFileToFTP = New-Object System.IO.FileInfo($objFileToFTP+$Filename+$RemoteFilename) in your post:
$f = "{0}{1}{2}" -f $objFileToFTP,$Filename,$RemoteFilename
try{
$objFileToFTP = New-Object System.IO.FileInfo($f)
}
catch{
"Error creating object with string: $f"
"`$objFileToFTP = $objFileToFTP"
"`$Filename = $Filename"
"`$RemoteFilename = $RemoteFilename"
$_
}