Honestly there is a lot of noise in this snippet code.
You are calling GetRequestStream twice, also it literally seems like you are just calling every single stream method in no particular order or reason, I mean you are closing the stream and then flushing it and then disposing it and then creating new stream and instantly closing it and then aborting it.
I don't even want to guess what is the first issue here but do note that there are plenty of reasons why you not getting the right result from that code.
Nevertheless try something like this:
FileInfo fileInf = new FileInfo(Clientpath);
string uri = string.Format("ftp://{0}/{1}/{2}", ftpServerIP, Serverpath, fileInf.Name);
var reqFTP = (FtpWebRequest)FtpWebRequest.Create(uri);
reqFTP.Credentials = new NetworkCredential(ftpUserID, ftpPassword);
reqFTP.Method = WebRequestMethods.Ftp.UploadFile;
reqFTP.UseBinary = true;
reqFTP.UsePassive = true;
reqFTP.Timeout = 3000;
ServicePointManager.DefaultConnectionLimit = 10;
using (Stream strm = reqFTP.GetRequestStream())
using (FileStream fs = fileInf.OpenRead())
fs.CopyTo(strm);