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
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
Vous devez vous connecter pour publier un commentaire.
Juste compris:
Dû utiliser un FileStream à la place.
Ai-je raté quelque chose ou, cette solution ne vous permettent de télécharger des fichiers plus petits que 2 ko?
La mémoire tampon est utilisée pour contenir un
chunk
de ce que nous sommes en téléchargement. Ces morceaux viennent dans 2kB tailles. Dans la boucle, on continue la lecture 2kB morceaux jusqu'à ce qu'il n'y a pas de plus.OriginalL'auteur Rick Eyre
Le plus trivial moyen de télécharger un fichier à partir d'un serveur FTP à l'aide .NET framework est à l'aide de
WebClient.DownloadFile
méthode:Utilisation
FtpWebRequest
de la classe, si vous avez besoin d'un plus grand contrôle seulement, queWebClient
classe n'offre pas (comme le TLS/SSL, le cryptage, le suivi des progrès, etc). Un moyen facile est de simplement copier un FTP flux de réponse àFileStream
à l'aide deStream.CopyTo
méthode:Seulement, si vous avez besoin de surveiller la progression du téléchargement, vous devez copier le contenu que par morceaux vous-même:
Pour l'interface graphique de progression (WinForms
ProgressBar
), voir:FtpWebRequest téléchargement FTP avec ProgressBar
Si vous voulez télécharger tous les fichiers d'un dossier distant, voir
C# Télécharger tous les fichiers et sous-répertoires via FTP.
OriginalL'auteur Martin Prikryl