La carga de archivos a FTP se corrompe una vez en el destino

Estoy creando una aplicación sencilla de Windows para arrastrar y cargar archivos automáticamente.

y estoy usando elCódigo de MSDN para subir el archivo al FTP.

El código es bastante sencillo:

<code>// Get the object used to communicate with the server.
FtpWebRequest request = (FtpWebRequest)WebRequest.Create(String.Format("{0}{1}", FTP_PATH, filenameToUpload));
request.Method = WebRequestMethods.Ftp.UploadFile;

// Options
request.UseBinary = true;
request.UsePassive = false;

// FTP Credentials
request.Credentials = new NetworkCredential(FTP_USR, FTP_PWD);

// Copy the contents of the file to the request stream.
StreamReader sourceStream = new StreamReader(fileToUpload.FullName);
byte[] fileContents = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
sourceStream.Close();
request.ContentLength = fileContents.Length;

Stream requestStream = request.GetRequestStream();
requestStream.Write(fileContents, 0, fileContents.Length);
requestStream.Close();

FtpWebResponse response = (FtpWebResponse)request.GetResponse();
writeOutput("Upload File Complete!");
writeOutput("Status: " + response.StatusDescription);

response.Close();
</code>

ylo hace subir al FTP

El problema es cuando veo el archivo en un navegador, o simplemente lo descargo e intento verlo en el escritorio, obtengo:

Ya he usadorequest.UseBinary = false; yrequest.UsePassive = false; Pero no cose para hacer ningún tipo de bien en absoluto.

Lo que he descubierto Fue eso, el archivo original tiene 122Kb de longitud y en el FTP (y después de descargar), tiene 219Kb ...

¿Qué estoy haciendo mal?

Por cierto, eluploadFileToFTP() método se ejecuta dentro de unBackgroundWorker, pero realmente no creo que haga ninguna diferencia ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta