Dateien über einen FTP server async downloaden/uploaden

  • VB.NET

Es gibt 17 Antworten in diesem Thema. Der letzte Beitrag () ist von Bournout3000.

    Dateien über einen FTP server async downloaden/uploaden

    Hallo. Ich habe schon lange gegoogled, aber keine wirkliche Antwort erhalten, die bei mir funktioniert. Desswegen wende ich mich an dieses tolle Programmierer Forum. Also ich will Dateien hochladen und downloaden, ohne dass sich mein Programm aufhängt. Ich benutzte im mom.:
    My.Computer.Network.DownloadFile(TextBox1.Text & "/" & Enthält, Save.FileName, TextBox2.Text, TextBox3.Text)
    zum Downloaden einer in einer Listbox markierten Datei. Dabei hängt es sich leider immer auf. Dies geht alles über einen FTP server.
    Textbox1 = Serveradresse
    Enthält = ListBox1.SelectedItem
    save.FileName ist damit der den Namen vom Server mitnimmt, weil sonst macht er das nicht richtig.
    Textbox2= FTP Benutzername
    Textbox3=FTP Passwort
    Dann ist es halt das gleiche nochmal für den Upload. Bei beiden hängt es immer, bis es fertig geuploadet bzw. gedownloadet ist. Ich will das dann auch noch async hochladen bzw. downloaden lassen, damit ich es später in einer Progressbar darstellen kann. Wenn ich etwas wie:
    Public WithEvents wb As New System.Net.WebClient Dann später in der Sub:

    VB.NET-Quellcode

    1. MsgBox("Die Datei:' " & ListBox1.SelectedItem.ToString & " ' steht ihnen nun zum Download bereit.")
    2. Save.Reset() Save.FileName = ListBox1.SelectedItem Save.ShowDialog() download = New WebClient wb.DownloadFileAsync(New Uri(TextBox1.Text & "/" & Enthält)) 'oder auch die andere Altnernative, die nicht klapptedownload.DownloadFileAsync(TextBox1.Text & "/" & Enthält) '(TextBox1.Text & "/" & Enthält), Save.FileName, TextBox2.Text, TextBox3.Text)) ProgressBar1.Value = 0 ProgressBar1.Maximum = 100

    Als Fehler kommt dort dann immer raus:
    Fehler bei der Überladungsauflösung, da keine zugreifbare "DownloadFileAsync" diese Anzahl von Argumenten akzeptiert.


    Wieso sagt er mir das und wie kann ich es beheben? Habt ihr vl. Lösungsanschläge, denn ich bin ziemlich neu auf diesem FTP Gebiet.
    Sonst hab ich immer nur mit Visual Basic so programmiert, dass es das Internet eig. garnicht brauchte und ohne Probleme alles offline funktionierte.


    Schonmal danke für eure Hilfe. :thumbup:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Bournout3000“ ()

    Wie schon gesagt ich bin sehr sehr neu in diesem Gebiet :S
    Also was muss ich jetzt schreiben, damit der die daten über FTP async hochläd, damit das nicht einfriert?

    * Vollzitat entfernt *

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    Also es kann nicht sein, dass man dieses Problem nicht findet, es gibt mittlerweile so viele Threads dazu hier im Forum wo immer die selbe Frage gestellt wird. Dir fehlt einfach ein Parameter, dabei ist es so einfach mit Intelllisense.

    Um die Datei herunterzuladen hast du das gemacht:

    VB.NET-Quellcode

    1. My.Computer.Network.DownloadFile(...)


    Zuerst einmal solltest du den My-Namespace komplett vergessen.

    Eine Alternative ist z.B. die System.NET Klasse -> WebClient. Mit dem kannst du auch Syncron runterladen.

    VB.NET-Quellcode

    1. Private WithEvents webClient As New Net.WebClient
    2. Private Sub Form1_Load(...) Handles MyBase.Load
    3. webClient.Proxy = Nothing 'um die verbindung zum host zu beschleunigen.
    4. webClient.DownloadFileAsync(New Uri("DEINE ADRESSE ZUM FTP SERVER BZW ZUR DATEI"),"SPEICHERPFAD")
    5. End Sub


    Jetzt kannst du dir das Event DownloadFileCompleted und DownloadProgressChanged generieren lassen, das kannst du oberhalb des Editors machen, dort sind zwei ComboBoxen. In der ersten wählst du das Element aus, (den WebClienten) und in der zweiten wählst du das Event aus: DownloadFileCompleted und DownloadProgressChanged(optional, kannste den Fortschritt anzeigen lassen)

    VB.NET-Quellcode

    1. Private Sub webClient_DownloadFileCompleted(byval sender as Object, byval e as EventArgs) Handles webClient.DownloadFileCompleted
    2. MessageBox.Show("Download abgeschlossen")
    3. End Sub
    Wow wirklich das hab ich gesucht. Ich brauchte etwas schriftliches, denn so konnte ich meinen Fehlern sehen. Ich hatte das webClient. vor dem DownloadFileAsync ... vergessen.
    Aso und jetzt kapiere ich das auch und es ergibt jetzt auch einen Sinn. Natürlich :)


    VB.NET-Quellcode

    1. My.Computer.Network.DownloadFile(...)
    wollte ich eh loswerden, desswegen hab ich auch das hier erstellt und der Rest erklärt sich ja nun von selbst und klappt auch. Vielen, vielen, vielen Dank!!! :thumbsup: :thumbup:

    * Vollzitat entfernt *

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „hal2000“ ()

    Bournout3000 schrieb:

    Wow wirklich das hab ich gesucht.


    Ich hoffe du machst nicht einfach Copy & Paste, so lernst du nämlich nichts. Als ich Anfänger war (Ich würde mich als Fortgeschrittener Anfänger bezeichnen), wollte ich auch immer Code Beispiele und jeder meckerte immer das ich eh nur den Code will um meine Applikation zu vervollständigen. Nunja, ich muss sagen, sie hatten alle Recht was das C&P betrifft, jedoch habe ich mich auch wirklich mit diesen Codes auseinandergesetzt und versucht, alles zu verstehen, und wenn ich dann nicht wusste was z.B. die und die Funktion macht, hab ich wieder gegooglet und mehr herausgefunden. Du lernst absolut nichts wenn du Copy & Paste machst und einfach entscheidest: Ja funzt -> Benutzen oder Ja funzt -> Lernen & Benutzen oder Funzt nicht -> Rausfinden, was funzt nicht...

    Und soo bin ich meinen Herausforderungen gewachsen...Du solltest wirklich nachfragen/nachschauen wenn du den Code NICHT verstehst, weil du sonst echt nichts lernst!

    Warum erzähl ich dir das alles?
    Weil ich, wie kleine Kinder auch, immer Beispielcode brauchte um von der Programmierung fasziniert zu werden. Wenn etwas funktioniert hat, wollte ich auch wissen wie es funktionierte und was dahinter steckt und nicht einfach sagen, ja cool funzt -> benutzen und weiter im text - nächstes feature einbauen ;)

    Killerjo96 schrieb:

    Bournout3000 schrieb:

    Wow wirklich das hab ich gesucht.


    Ich hoffe du machst nicht einfach Copy & Paste, so lernst du nämlich nichts. Als ich Anfänger war (Ich würde mich als Fortgeschrittener Anfänger bezeichnen), wollte ich auch immer Code Beispiele und jeder meckerte immer das ich eh nur den Code will um meine Applikation zu vervollständigen. Nunja, ich muss sagen, sie hatten alle Recht was das C&P betrifft, jedoch habe ich mich auch wirklich mit diesen Codes auseinandergesetzt und versucht, alles zu verstehen, und wenn ich dann nicht wusste was z.B. die und die Funktion macht, hab ich wieder gegooglet und mehr herausgefunden. Du lernst absolut nichts wenn du Copy & Paste machst und einfach entscheidest: Ja funzt -> Benutzen oder Ja funzt -> Lernen & Benutzen oder Funzt nicht -> Rausfinden, was funzt nicht...

    Und soo bin ich meinen Herausforderungen gewachsen...Du solltest wirklich nachfragen/nachschauen wenn du den Code NICHT verstehst, weil du sonst echt nichts lernst!

    Warum erzähl ich dir das alles?
    Weil ich, wie kleine Kinder auch, immer Beispielcode brauchte um von der Programmierung fasziniert zu werden. Wenn etwas funktioniert hat, wollte ich auch wissen wie es funktionierte und was dahinter steckt und nicht einfach sagen, ja cool funzt -> benutzen und weiter im text - nächstes feature einbauen ;)
    Ja das ist bei mir eig. das gleiche :)
    Ich setzte mich hin, wenn ich denn mal Zeit hab und versuche mir selbst Ziele zu setzten, damit ich lerne wie das alles mit VB geht. Wenn ich dann mal nicht weiterkomme, dann frage ich nach. Ich will aus meinen Fehlern lernen und sie auch verstehen, damit ich es beim nächsten male besser mache. Und es ist halt meistens so, dass ich etwas erst verstehe, wenn ich es wirklich sehe. Dann sehe ich nämlich, was ich für Fehler gemacht habe und was ich dann beim nächsten mal besser machen kann. Hier hab ich meinen Fehler direkt sehen können , was mich direkt geärgert hat, dass ich es übersehen habe. Aber dadurch hab ich es besser verstehen können ^^
    Danke nochmal für all eure Hilfe :thumbsup: