Das Herunterladen großer Dateien (~ 150 MB) vom FTP-Server hängt
Ich versuche, Dateien vom FTP-Server mit folgendem Code herunterzuladen:
using (System.IO.FileStream fileStream = System.IO.File.OpenWrite(filePath))
{
byte[] buffer = new byte[4096];
int bytesRead = responseStream.Read(buffer, 0, 4096);
while (bytesRead > 0)
{
fileStream.Write(buffer, 0, bytesRead);
bytesRead = responseStream.Read(buffer, 0, 4096);
}
}
Die Erstellung von responseStream:
System.IO.Stream responseStream = GetFileAsStream(url, username, password, false);
public static System.IO.Stream GetFileAsStream(string ftpUrl, string username, string password, bool usePassive)
{
System.Net.FtpWebRequest request = (System.Net.FtpWebRequest)System.Net.WebRequest.Create(ftpUrl);
request.KeepAlive = false;
request.ReadWriteTimeout = 120000;
request.Timeout = -1;
request.UsePassive = usePassive;
request.Credentials = new System.Net.NetworkCredential(username, password);
request.Method = System.Net.WebRequestMethods.Ftp.DownloadFile;
System.IO.Stream fileResponseStream;
System.Net.FtpWebResponse fileResponse = (System.Net.FtpWebResponse)request.GetResponse();
fileResponseStream = fileResponse.GetResponseStream();
return fileResponseStream;
}
Es funktioniert gut mit kleineren Dateien, aber wenn eine Datei größer ist (z. B. 150 MB), hängt der Prozess. Aus irgendeinem Grund versteht das Programm nicht, dass der Download abgeschlossen ist, und versucht immer noch, mehr Bytes zu lesen.
Ich bevorzuge Antworten ohne externe Bibliotheken. Vielen Dank