You may find this is due to the protocol (possibly ftp or less likely tcp) splitting the file transfer into packets. If this coccured your code may need to read from the stream (that I presume you are using) to transfer to the file to actually read the entire file from the stream. A loop similar to:
int BytesRead = Stream.Read(...);
while(BytesRead > 0)
{
BytesRead = Stream.Read(...);
}
then whatever you use as your buffer in the
Stream.Read
method will contain all the file bytes rather than just some of them. A good check is also to check if your buffer contains the number of bytes you expected.