Le téléchargement de fichiers à l'Aide de FtpWebRequest

Je suis en train de télécharger un fichier à l'aide de FtpWebRequest.

private void DownloadFile(string userName, string password, string ftpSourceFilePath, string localDestinationFilePath)
{
    int bytesRead = 0;
    byte[] buffer = new byte[1024];

    FtpWebRequest request = CreateFtpWebRequest(ftpSourceFilePath, userName, password, true);
    request.Method = WebRequestMethods.Ftp.DownloadFile;

    Stream reader = request.GetResponse().GetResponseStream();
    BinaryWriter writer = new BinaryWriter(File.Open(localDestinationFilePath, FileMode.CreateNew));

    while (true)
    {
        bytesRead = reader.Read(buffer, 0, buffer.Length);

        if (bytesRead == 0)
            break;

        writer.Write(buffer, 0, bytesRead);
    }        
}

Il utilise cette CreateFtpWebRequest méthode que j'ai créée:

private FtpWebRequest CreateFtpWebRequest(string ftpDirectoryPath, string userName, string password, bool keepAlive = false)
{
    FtpWebRequest request = (FtpWebRequest)WebRequest.Create(new Uri(ftpDirectoryPath));

    //Set proxy to null. Under current configuration if this option is not set then the proxy that is used will get an html response from the web content gateway (firewall monitoring system)
    request.Proxy = null;

    request.UsePassive = true;
    request.UseBinary = true;
    request.KeepAlive = keepAlive;

    request.Credentials = new NetworkCredential(userName, password);

    return request;
}

Il télécharge. Mais l'information est toujours corrompu. Quelqu'un sait ce qui se passe?

Qu'entendez-vous par "est toujours corrompu"? Veuillez être plus précis.
Bien que j'ai eu un autre problème, la description commentaire au-dessus de la request.Proxy = null ligne de la CreateFtpWebRequest fonction résolu le problème que j'ai eu. Par conséquent, upvote!

OriginalL'auteur Rick Eyre | 2012-09-20