FtpWebRequest Fortschrittsanzeige bei Upload nicht korrekt

  • VB.NET

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von Nikx.

    FtpWebRequest Fortschrittsanzeige bei Upload nicht korrekt

    Salut zusammen
    Ich habe habe mir mit Hilfe von verschiedenen Quellen im Internet eine Anwendung gemacht die eine Datei per FtpWebRequest auf einen FTP Server hoch lädt.
    Die Anwendung funktioniert auch so wie gewollt und es wird alles korrekt hochgeladen. Aber die Fortschrittsanzeige welche den aktuellen Status in einer ProgressBar zeigt stimmt nicht mit dem Upload überein. Und zwar, egal wie gross die zu übertragende Datei ist, zeigt die Progressbar nur bis max. 50% an um danach nach erreichen der 50% marke grad auf 100% zu springen.

    Wie kann ich den korrekten Uploadfortschritt ermitteln?

    VB.NET-Quellcode

    1. Dim WithEvents Upload As Net.WebClient
    2. Private Sub btnUploadSwtoFTP_Click(sender As System.Object, e As System.EventArgs) Handles btnUploadSwtoFTP.Click
    3. Dim sUser As String = cbBootloadUsername.Text
    4. Dim sPwd As String = cbBootloadPasswort.Text
    5. Dim sServer As String = "ftp://" & cbBootloadPbxDef.Text & "/" & txtDir.Text
    6. Dim cred As NetworkCredential = New NetworkCredential(sUser, sPwd)
    7. Dim request As FtpWebRequest = FtpWebRequest.Create("ftp://" & cbBootloadPbxDef.Text & "/" & txtDir.Text)
    8. request.Method = WebRequestMethods.Ftp.MakeDirectory
    9. request.Credentials = cred
    10. Dim response As FtpWebResponse = request.GetResponse()
    11. response.Close()
    12. Dim sFullName As String = cbPaketLoader.Text
    13. ' Dateiname extrahieren
    14. Dim uFile As String = IO.Path.GetFileName(sFullName)
    15. ProgressBar1.Value = 0
    16. ProgressBar1.Maximum = 100
    17. lblProgress.Text = ""
    18. Dim sFile As String = cbPaketLoader.Text
    19. Dim sDestFile As String = uFile
    20. UploadFTP(sFile, sDestFile, sServer, sUser, sPwd)
    21. End Sub
    22. Private Sub UploadFTP(ByVal Datei As String, _
    23. ByVal Dateiname As String, _
    24. ByVal Ftp As String, _
    25. ByVal Benutzername As String, _
    26. ByVal Passwort As String)
    27. ' WebClient
    28. Upload = New Net.WebClient
    29. ' URL mit Zieldatei
    30. Dim url As String = Ftp & IIf(Ftp.EndsWith("/"), "", "/") & Dateiname
    31. ' Anmeldedaten am FTP-Server
    32. Upload.Credentials = New Net.NetworkCredential(Benutzername, Passwort)
    33. ' Datei asnychron uploaden
    34. Upload.UploadFileAsync(New Uri(url), Datei)
    35. End Sub
    36. Private Sub Upload_UploadFileCompleted(ByVal sender As Object, _
    37. ByVal e As System.Net.UploadFileCompletedEventArgs) Handles Upload.UploadFileCompleted
    38. ' Upload beenden
    39. MsgBox("Upload-Vorgang beendet!", MsgBoxStyle.Information)
    40. 'ProgressBar1.Value = 0
    41. lblProgress.Text = ""
    42. End Sub
    43. Private Sub Upload_UploadProgressChanged(ByVal sender As Object, _
    44. ByVal e As System.Net.UploadProgressChangedEventArgs) Handles Upload.UploadProgressChanged
    45. ProgressBar1.Value = e.ProgressPercentage
    46. ProgressBar1.Refresh()
    47. lblProgress.Text = "Upload" & " - " & e.ProgressPercentage & "% hochgeladen!"
    48. End Sub



    Edit by Manschula: Bitte auf das passende Unterforum achten --> Thema aus dem Hauptforum verschoben

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

    Bytes der Datei ermitteln und Byte für Byte laden.
    dann für jeden Byte Die Bar um 1 erhöhen und die Max auf die Byte-Zahl setzen.

    Grüße
    "Life isn't about winning the race. Life is about finishing the race and how many people we can help finish the race." ~Marc Mero

    Nun bin ich also auch soweit: Keine VB-Fragen per PM! Es gibt hier ein Forum, verdammt!