Re: PutFiles
You can handle Session.FileTransferred event, and query size of the local file provided in TransferEventArgs.FileName (upload) or TransferEventArgs.Destination (download).
https://winscp.net/eng/docs/library_session_filetransferred
https://winscp.net/eng/docs/library_session_filetransferred