This error is reported when the source file specified by PutFile method's 'localPath' argument does not exist. To check whether the localPath is a proper file path, call System.IO.File.Exists(localPath) before calling the PutFile method and make sure it returns 'true'.
If this doesn't reveal any problem the file seems to actually exist (but PutFile still fails), please let us know!