Datei hochladen und die download-Datei von FTP
Ich versuche, ein Programm-uploads/downloads .exe
Datei zu einem FTP
Versuchte ich mit FtpWebRequest
, ich aber nur gelingen, upload und download .txt-Dateien.
Dann fand ich hier eine Lösung für das herunterladen mit der WebClient
:
WebClient request = new WebClient();
request.Credentials = new NetworkCredential("username", "password");
byte[] fileData = request.DownloadData("ftp://myFTP.net/");
FileStream file = File.Create(destinatie);
file.Write(fileData, 0, fileData.Length);
file.Close();
Diese Lösung funktioniert. Aber ich habe gesehen, dass WebClient
hat eine Methode DownloadFile
die nicht funktionierte. Ich denke, weil es nicht funktioniert auf FTP
nur auf HTTP
. Ist meine Annahme wahr ist? Wenn nicht, wie bekomme ich es auf Arbeit?
Und gibt es irgendeine andere Lösung für das hochladen/herunterladen von einem .exe
Datei auf ftp mit FtpWebRequest
?
InformationsquelleAutor Spreadzz | 2012-10-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide
WebClient.UploadFile
undWebClient.DownloadFile
korrekt funktionieren für FTP als auch für binäre Dateien.Hochladen
Wenn Sie brauchen eine stärkere Kontrolle, dass
WebClient
nicht bieten (wie TLS/SSL-Verschlüsselung, ascii - /text-transfer-Modus, etc.), verwenden SieFtpWebRequest
. Einfach nur kopierenFileStream
FTP-stream mitStream.CopyTo
:Wenn Sie brauchen, um zu überwachen, eine upload-Fortschritt, Sie zu kopieren Sie den Inhalt von Blöcken selbst:
Zur GUI-progress (WinForms
ProgressBar
), siehe:Wie können wir zeigen Fortschrittsbalken für den upload mit FtpWebRequest
Wenn Sie möchten, laden Sie alle Dateien aus einem Ordner finden Sie unter
Verzeichnis hochladen von Dateien per WebClient.
Download
Wenn Sie brauchen eine stärkere Kontrolle, dass
WebClient
nicht bieten (wie TLS/SSL-Verschlüsselung, ascii - /text-transfer-Modus, etc.), verwenden SieFtpWebRequest
. Einfach nur kopieren einen FTP-Antwort-stream aufFileStream
mitStream.CopyTo
: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
Wenn Sie möchten, laden Sie alle Dateien von einem remote-Ordner, siehe
C# - Download aller Dateien und Unterverzeichnisse per FTP.
Das ist eine ziemlich umfassende Frage. Sind Sie Fragen, warum habe ich gewählt 10K? Oder warum gibt es einen Puffer?
Ich versuche, den download großer Dateien im WinPE-Umgebung, RAM ist begrenzt, 512 MB, so dass ich nicht genuegend Arbeitsspeicher ausgeführt, während das herunterladen von großen Dateien. Ist 10K byte-Größe optimal für streaming-Dateien über FTP ? Bin auf der Suche nach Möglichkeiten zur Optimierung der oben genannten code, so dass ich don ' T haben, zu leeren stream wieder und wieder.
Waren Sie running out of memory, wenn mit meinem code? Oder mit einem anderen code? Ich denke, man sollte die post eine separate Frage.
InformationsquelleAutor Martin Prikryl
Müssen Sie sagen, ob Sie das hochladen von text-oder Binär-Dateien.
Fügen Sie die folgende Zeile nach der Anforderung erklärt wird & initialisiert:
http://msdn.microsoft.com/en-us/library/system.net.ftpwebrequest.usebinary.aspx
Ich habe nicht verwendet, aber festgestellt, ein paar möglicherweise nützliche links: dijksterhuis.org/webclient-class-upload-download-ftp-files & codeproject.com/Articles/17202/...
Aber
true
ist der Standardwert, also ich sehe nicht, wie dies helfen könnte.guter Punkt: docs.microsoft.com/en-gb/dotnet/api/...
InformationsquelleAutor JohnLBevan
Hochladen ist einfach...
Herunterladen ist einfach zu...
Der code, den ich gemacht unten verwendet BackgroundWorker (damit Sie nicht einfrieren die Benutzeroberfläche/Anwendung, sobald der download beginnt). Plus, ich verkürzte den code mit der Verwendung von lambda
(=>)
.Können Sie auch DownloadFileAsync Methode zu zeigen, echte Fortschritte-Datei herunterladen:
InformationsquelleAutor newbieguy