Dim buffLength As Integer = 2048
Dim buff(buffLength - 1) As Byte
Dim _FileStream As System.IO.FileStream = _FileInfo.OpenRead()
Dim _Stream As System.IO.Stream = _FtpWebRequest.GetRequestStream()
Dim contentLen As Integer = _FileStream.Read(buff, 0, buffLength)
As noted in your original message, you are creating a buffer of 2047 bytes, but reading 2048 bytes into it. This has the potential for some of your data being lost and your uploaded files consequently being corrupted.