Hilfe. Downloader FTP-Ordner bzw. Datei

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von faxe1008.

    Hilfe. Downloader FTP-Ordner bzw. Datei

    Guten Tag @all
    Ich habe hier ein kleines Prob und bin fest der hoffnung ihr könnt mir helfen.
    Zwar wollte ich einen Downloader erstellen der einen ganzen Ordner auslesen tut und diesen dann samt allen Daten herunterladen tut, aber dazu sind meine Fähigkeiten leider nicht ausreichend.
    Nun habe ich mal ein bissel gebastelt und das ist rausgekommen.
    Mein Prob ist nun folgendes.
    Der Downloader hängt sich leider auf bzw. es kommt keine Rückmeldung, erst wenn der Download beendet ist kommt eine Fehlermeldung und der Downloader funktioniert wieder.
    Auch die Datei hat er heruntergeladen.

    Nun meine Frage an Alle:
    1: Wie kann ich das umgehen das der Downloader sich nicht mehr aufhängt.
    2: Wie kann ich eine Progressbar einbauen die auch den Fortschritt anzeigt?
    3: Ist es möglich statt eine .rar Datei auch einen ganzen Ordner herunterzuladen?
    4: Wie kann der Benutzer zb das Verzeichnis selber wählen, wo die heruntergeladene Datein bzw Datein reingeladen werden?

    Entschuldigt bitte 100000 mal, ich befasse mich erst seit etwa 6 Tagen damit, deswegen habe ich soviele Frage.
    MFG
    Herbert Witze

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class Form1
    3. Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
    4. CheckForUpdate()
    5. End Sub
    6. Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown
    7. If (e.Button = Windows.Forms.MouseButtons.Left) Then
    8. Me.Capture = False
    9. Me.WndProc(Message.Create(Me.Handle, &HA1, CType(&H2, IntPtr), IntPtr.Zero))
    10. Else : End If
    11. End Sub
    12. Private Sub PictureBox1_MouseEnter(sender As Object, e As EventArgs)
    13. PictureBox1.BackgroundImage = My.Resources.ohell
    14. End Sub
    15. Private Sub PictureBox1_MouseLeave(sender As Object, e As EventArgs)
    16. PictureBox1.Parent = Me
    17. PictureBox1.BackgroundImage = Nothing
    18. End Sub
    19. Private Sub PictureBox3_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox3.MouseEnter
    20. PictureBox3.BackgroundImage = My.Resources.cooltext1846290262df
    21. End Sub
    22. Private Sub PictureBox3_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox3.MouseLeave
    23. PictureBox3.BackgroundImage = My.Resources.cooltext1846290262
    24. End Sub
    25. Private Sub PictureBox3_Click(sender As Object, e As EventArgs) Handles PictureBox3.Click
    26. Application.Exit()
    27. End Sub
    28. Private Sub PictureBox2_Click(sender As Object, e As EventArgs) Handles PictureBox2.Click
    29. Me.WindowState = FormWindowState.Minimized
    30. End Sub
    31. Private Sub PictureBox6_Click(sender As Object, e As EventArgs) Handles PictureBox6.Click
    32. spende.Show()
    33. Me.Hide()
    34. End Sub
    35. Private Sub PictureBox4_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox4.MouseEnter
    36. PictureBox4.BackgroundImage = My.Resources.cooltext1849029364klick
    37. End Sub
    38. Private Sub PictureBox4_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox4.MouseLeave
    39. PictureBox4.BackgroundImage = My.Resources.cooltext1849029364
    40. End Sub
    41. Private Sub PictureBox4_Layout(sender As Object, e As LayoutEventArgs) Handles PictureBox4.Layout
    42. PictureBox4.BackgroundImage = My.Resources.cooltext1849029364
    43. End Sub
    44. Private Sub PictureBox6_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox6.MouseEnter
    45. PictureBox6.BackgroundImage = My.Resources.cooltext1849034924klick
    46. End Sub
    47. Private Sub PictureBox6_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox6.MouseLeave
    48. PictureBox6.BackgroundImage = My.Resources.cooltext1849034924
    49. End Sub
    50. Private Sub PictureBox6_Layout(sender As Object, e As LayoutEventArgs) Handles PictureBox6.Layout
    51. PictureBox6.BackgroundImage = My.Resources.cooltext1849034924
    52. End Sub
    53. Private Sub PictureBox5_Layout(sender As Object, e As LayoutEventArgs) Handles PictureBox5.Layout
    54. PictureBox5.BackgroundImage = My.Resources.cooltext1849031666
    55. End Sub
    56. Private Sub PictureBox5_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox5.MouseLeave
    57. PictureBox5.BackgroundImage = My.Resources.cooltext1849031666
    58. End Sub
    59. Private Sub PictureBox5_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox5.MouseEnter
    60. PictureBox5.BackgroundImage = My.Resources.cooltext1849031666klick
    61. End Sub
    62. Private Sub PictureBox3_Layout(sender As Object, e As LayoutEventArgs) Handles PictureBox3.Layout
    63. PictureBox3.BackgroundImage = My.Resources.cooltext1846290262
    64. End Sub
    65. Private Sub PictureBox2_Layout(sender As Object, e As LayoutEventArgs) Handles PictureBox2.Layout
    66. PictureBox2.BackgroundImage = My.Resources.cooltext1846295722
    67. End Sub
    68. Private Sub PictureBox2_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox2.MouseLeave
    69. PictureBox2.BackgroundImage = My.Resources.cooltext1846295722
    70. End Sub
    71. Private Sub PictureBox2_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox2.MouseEnter
    72. PictureBox2.BackgroundImage = My.Resources.cooltext1846295722df
    73. End Sub
    74. Private Sub PictureBox1_Layout(sender As Object, e As LayoutEventArgs) Handles PictureBox1.Layout
    75. PictureBox1.BackgroundImage = My.Resources.StaEp
    76. End Sub
    77. Private Sub PictureBox1_MouseLeave_1(sender As Object, e As EventArgs) Handles PictureBox1.MouseLeave
    78. PictureBox1.BackgroundImage = My.Resources.StaEp
    79. End Sub
    80. Private Sub PictureBox1_MouseEnter_1(sender As Object, e As EventArgs) Handles PictureBox1.MouseEnter
    81. PictureBox1.BackgroundImage = My.Resources.StaEpok
    82. End Sub
    83. Private Sub PictureBox4_Click(sender As Object, e As EventArgs) Handles PictureBox4.Click
    84. hilfe.Show()
    85. Me.Hide()
    86. End Sub
    87. Private Sub Label1_Paint(sender As Object, e As PaintEventArgs) Handles Label1.Paint
    88. Dim web As New WebClient
    89. Dim News As String = web.DownloadString("www.xxxxx.com"") '<---- DEIN_FTP_SERVER_+PFAD
    90. Label1.Text = News
    91. End Sub
    92. Private Sub PictureBox7_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox7.MouseEnter
    93. PictureBox7.BackgroundImage = My.Resources.cooltext1849991977klick
    94. End Sub
    95. Private Sub PictureBox7_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox7.MouseLeave
    96. PictureBox7.BackgroundImage = My.Resources.cooltext1849991977
    97. End Sub
    98. Private Sub PictureBox7_Layout(sender As Object, e As LayoutEventArgs) Handles PictureBox7.Layout
    99. PictureBox7.BackgroundImage = My.Resources.cooltext1849991977
    100. End Sub
    101. Private Sub PictureBox7_Click(sender As Object, e As EventArgs) Handles PictureBox7.Click
    102. info.Show()
    103. Me.Hide()
    104. End Sub
    105. Private Sub PictureBox5_Click(sender As Object, e As EventArgs) Handles PictureBox5.Click
    106. Process.Start("www.xxxxx.com") '<---- DEINE_HOMEPAGE
    107. End Sub
    108. Public Sub CheckForUpdate()
    109. Process.Start("steam://rungameid/107410// -xxxxx1 -port=2302") '
    110. Application.Exit()
    111. End Sub
    112. Private Sub PictureBox8_Layout(sender As Object, e As LayoutEventArgs) Handles PictureBox8.Layout
    113. PictureBox8.BackgroundImage = My.Resources.StaAl
    114. End Sub
    115. Private Sub PictureBox8_MouseLeave_1(sender As Object, e As EventArgs) Handles PictureBox8.MouseLeave
    116. PictureBox8.BackgroundImage = My.Resources.StaAl
    117. End Sub
    118. Private Sub PictureBox8_MouseEnter_1(sender As Object, e As EventArgs) Handles PictureBox8.MouseEnter
    119. PictureBox8.BackgroundImage = My.Resources.StaAlok
    120. End Sub
    121. Private Sub PictureBox8_Click(sender As Object, e As EventArgs) Handles PictureBox8.Click
    122. CheckForUpdatee()
    123. End Sub
    124. Public Sub CheckForUpdatee()
    125. Dim file As String = Application.StartupPath & "\xxxxx.com.rar" '<-- Hier wird der name der versions datei erstellt (wo sich der Launcher befindet, umbenennen möglich)
    126. Dim fileneu As String = Application.StartupPath & "\xxxxx.com.rar" '<-- Hier wird der name der Update datei erstellt (wo sich der Launcher befindet, umbenennen möglich)
    127. Dim MyVer As String = My.Application.Info.Version.ToString
    128. If My.Computer.FileSystem.FileExists(file) Then
    129. My.Computer.FileSystem.DeleteFile(file)
    130. End If
    131. If My.Computer.FileSystem.FileExists(fileneu) Then
    132. My.Computer.FileSystem.DeleteFile(fileneu)
    133. End If
    134. My.Computer.Network.DownloadFile("ftp://ftp.xxxxx.com/file.-", file) '<-- Hier wird auf deinem FTP Server die version abgefragt
    135. Dim lastver As String = My.Computer.FileSystem.ReadAllText(file)
    136. If Not MyVer = lastver Then
    137. MsgBox("Update verfügbar!")
    138. MsgBox("Achtung: Abbrechen des Update könnte zu Fehlern führen!")
    139. MsgBox("Starte NICHT das Spiel während des Update, dies führt zu Fehlern und kann eine Neuinstallation mit sich ziehen!")
    140. ' **** Falls Benötigt ****
    141. ' Ab hier wird das Update gestartet.
    142. ' Die Update/Download Variante musst du bestimmen/Schreiben da es viele verschiedene varianten gibt (Über FTP,Web Host, Root sonst was)
    143. Else
    144. Process.Start("steam://xxxxxxxxxxxxxxxxxx") '
    145. Application.Exit()
    146. End If
    147. End Sub
    148. Private Sub ProgressBar1_Click(sender As Object, e As EventArgs)
    149. End Sub
    150. Private Sub Label2_Click(sender As Object, e As EventArgs)
    151. End Sub
    152. Private Sub Label1_Click(sender As Object, e As EventArgs) Handles Label1.Click
    153. End Sub
    154. Private Sub PictureBox9_Click_1(sender As Object, e As EventArgs) Handles PictureBox9.Click
    155. Process.Start("www.xxxxx.com"") '<---- DEINE_HOMEPAGE
    156. End Sub
    157. Private Sub Label2_Click_1(sender As Object, e As EventArgs)
    158. End Sub
    159. Private Sub PictureBox10_Click_1(sender As Object, e As EventArgs) Handles PictureBox10.Click
    160. Process.Start("https://www.xxxxx.com"") '<---- DEINE_HOMEPAGE
    161. End Sub
    162. Private Sub PictureBox11_Click_1(sender As Object, e As EventArgs) Handles PictureBox11.Click
    163. Process.Start("https://www.xxxxx.com"") '<---- DEINE_HOMEPAGE
    164. End Sub
    165. Private Sub PictureBox12_Click_1(sender As Object, e As EventArgs) Handles PictureBox12.Click
    166. Process.Start("https://www.xxxxx.com") '<---- DEINE_HOMEPAGE
    167. End Sub
    168. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    169. End Sub
    170. End Class

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

    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    FTP ist ziemlich gefährlich und unsignierte Archive, die dann weiter behandelt werden, auch. Aber wenn Du Dir sicher bist, dass Du das so möchtest:
    Vermische nicht den My-Namespace mit den System.Net-Klassen, sondern nutze erstere nicht, sondern stattdessen einen WebClient oder WebRequest. Dann kannst Du asynchrone Methoden verwenden, die Events zur Verfügung stellen, mit denen Du auch den Fortschritt behandeln kannst. Noch besser wäre natürlich das TAP.

    Und bitte benenne Deine Controls richtig, so verlierst Du den Überblick.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ok Danke für die Info.. Da muss ich mich noch bissel belesen um zu verstehen was du meinst :( wie schon gesagt bin absoluter neuling :( aber mit Stolz ;)

    Kurze Frage. Ist das sowas hier? vbarchiv.net/tipps/tipp_1926.html
    hoffe ich darf hier sowas posten

    Beiträge zusammengefügt. ~Trade

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

    Ja, das nutzt den WebClient entsprechend.

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Ja das ist besser. Btw. der Code ist so wie er da oben steht nicht vernünftig wartbar, es sieht danach aus als würdest du dir eigene Buttons o.ä. mit Pictureboxen zusammenbasteln. Bau dir doch einfach ein eigenes Control, in dem du das selbst zeichnest (wenn nicht allzu kompliziert) oder du übergibst dem Control als Properties die einzelnen Bilder für die States. Das würde deinen Code um 3/4 reduzieren.

    Mal noch was anderes: Der VB-Syntaxhighlighter scheint wieder/immer noch Fehler zu produzieren.

    8-) faxe1008 8-)
    Habe schon länger nichts mehr mit VB.NET gemacht und grade keine IDE zur Hand, aber hier mal der Ansatz:

    Du erstellst ne Klasse die von Button erbt:

    VB.NET-Quellcode

    1. Public Class CustomButton
    2. Inherits Button
    3. Public Enum State
    4. Normal
    5. Hover
    6. Clicked
    7. End Enum
    8. Private currentState as State = State.Normal
    9. Public Property StateNormal as Image
    10. Public Property StateHover as Image
    11. Public Property StateClick as Image
    12. Protected Overrides Sub OnPaint(ByVal pEvent As PaintEventArgs)
    13. With pEvent.Graphics
    14. ' Hier Dinge wie Rahmen oder Text zeichnen
    15. Select Case currentState
    16. Case State.Normal
    17. .drawImage(dein_ressourcen_bild,x,y) 'Hier Position des Bildes einsetzen
    18. ' Für die übrigen States die Bilder zeichnen
    19. End Select
    20. End With
    21. End Sub
    22. Private Sub MouseDown(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles MouseDown
    23. currentState = State.Click
    24. End Sub
    25. Private Sub MouseUp(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles MouseUp
    26. currentState = State.Normal
    27. End Sub
    28. End Class


    So sieht das DIng grob aus. Wenn nicht alles auf Anhieb klappt, dann lese dich bei MSDN ein. Hier gibt es wirklich alles :D

    8-) faxe1008 8-)

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