Herunterladen von Dateien Mit FtpWebRequest
Ich versuche, eine Datei herunterzuladen, mithilfe von 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);
}
}
Verwendet es diese CreateFtpWebRequest
Methode, die ich erstellt:
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;
}
Er downloadet es. Aber die information ist immer beschädigt. Wer weiß, was Los ist???
- Was meinst du mit "ist immer korrupt"? Bitte genauer sein.
- Ich hatte zwar ein anderes problem, die Beschreibung Bemerkung über die
request.Proxy = null
Linie derCreateFtpWebRequest
Funktion das problem, dass ich hatte. Daher upvote!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gerade herausgefunden:
War die Verwendung der FileStream-statt.
chunk
von dem, was wir sind herunterladen. Diese Stücke kommen in 2kB Größen. In der Schleife wir halten Sie zu Lesen, 2kB Blöcken, bis es nicht mehr.Einfachste Weg,
Der einfachste Weg zum downloaden einer Datei von einem FTP-server verwenden .NET framework wird mit
WebClient.DownloadFile
Methode:Erweiterte Optionen
Verwenden
FtpWebRequest
Klasse, wenn Sie brauchen eine größere Kontrolle nur, dassWebClient
Klasse nicht bieten (wie TLS/SSL-Verschlüsselung, Fortschrittskontrolle usw.). Eine einfache Möglichkeit, kopieren Sie einfach eine FTP-Antwort-stream aufFileStream
mitStream.CopyTo
Methode:Fortschritt zu überwachen
Wenn Sie brauchen, um zu überwachen, download-Fortschritt, Sie zu kopieren Sie den Inhalt von Blöcken selbst:
Zur GUI-progress (WinForms
ProgressBar
), siehe:FtpWebRequest FTP-download mit ProgressBar
Download-Ordner
Wenn Sie möchten, laden Sie alle Dateien von einem remote-Ordner, siehe
C# - Download aller Dateien und Unterverzeichnisse per FTP.