FTP Upload mit Progressbar und Byte Anzeige

  • VB.NET

Es gibt 9 Antworten in diesem Thema. Der letzte Beitrag () ist von Dodo.

    Größe der Datei die hochgeladen wird ermitteln, größe der Datei, die sich bereits auf dem Server befindet ermitteln und letztere durch erstere dividieren, um die Value der Progressbar zu erhalten.

    Man korrigiere mich bei Denkfehlern.

    MfG,
    eXtense

    Pixxxas schrieb:

    Mit einer Progressbar habe ich gefunden aber nicht mit einer Byte Anzeige.........

    VB.NET-Quellcode

    1. Private Sub client_Changed(ByVal sender As Object, ByVal e As System.Net.UploadProgressChangedEventArgs) Handles wcl.UploadProgressChanged
    2. Dim byte_total As Integer
    3. byte_total = e.TotalBytesToSend
    4. Dim byte_sended As Integer
    5. byte_sended = e.BytesSent
    6. Label1.Text = byte_sended & " bytes von " & byte_total & " hochgeladen!"
    7. End Sub


    Wo ist das Problem?

    MFG
    Ok ich hab jetzt doch noch was Interessantes gefunden :

    VB.NET-Quellcode

    1. Imports System.Net
    2. Public Class Form1
    3. Dim WithEvents Upload As Net.WebClient
    4. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    5. Dim opn As New OpenFileDialog
    6. With opn
    7. .Filter = "Alle Dateien (*.*) | *.*"
    8. .FileName = "Datei..."
    9. .Title = "Bitte wählen sie eine Datei aus..."
    10. If .ShowDialog = Windows.Forms.DialogResult.OK Then
    11. TextBox1.Text = .FileName
    12. TextBox2.Text = IO.Path.GetFileName(opn.FileName)
    13. End If
    14. End With
    15. End Sub
    16. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    17. End Sub
    18. Private Sub Upload_UploadProgressChanged(ByVal sender As Object, _
    19. ByVal e As System.Net.UploadProgressChangedEventArgs) Handles Upload.UploadProgressChanged
    20. ProgressBar1.Value = e.ProgressPercentage * 2
    21. ProgressBar1.Refresh()
    22. lblProgress.Text = "Upload" & " - " & e.ProgressPercentage & "% hochgeladen!"
    23. End Sub
    24. Private Sub UploadFTP(ByVal Datei As String, _
    25. ByVal Dateiname As String, _
    26. ByVal Ftp As String, _
    27. ByVal Benutzername As String, _
    28. ByVal Passwort As String)
    29. ' WebClient
    30. Upload = New Net.WebClient
    31. Dim url As String = Ftp & IIf(Ftp.EndsWith("/"), "", "/") & Dateiname
    32. Upload.Credentials = New Net.NetworkCredential(Benutzername, Passwort)
    33. Upload.UploadFileAsync(New Uri(url), Datei)
    34. End Sub
    35. Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
    36. ProgressBar1.Value = 0
    37. lblProgress.Text = ""
    38. ProgressBar1.Visible = True
    39. Label10.Visible = True
    40. Dim sFile As String = TextBox1.Text
    41. Dim sDestFile As String = TextBox2.Text
    42. Dim sServer As String = "ftp://flatbooster.com/"
    43. Dim sUser As String = "User"
    44. Dim sPwd As String = "Pass"
    45. UploadFTP(sFile, sDestFile, sServer, sUser, sPwd)
    46. End Sub
    47. End Class


    Nur leider geht dir Progresspar nur bis 50 und dann springt sie gleich auf 100 %
    Woran kann das liegen?
    Wieso Kopierst du irgendein mist den anscheint nicht verstehst, anstatt es dir alleine zu erarbeiten wobei man meistens noch was lernt?
    So schwierig ist das nun wirklich nicht, die EventArgs liefern dir ja im prinzip alles mit was du brauchst und wieso in dem Code dort Percentage * 2 steht is auch unsinnig, denn was heißt Percentage auf deutsch? Richtig Prozent, also wieso sollte man das nochmal mit 2 multiplizieren?

    Die EventArgs liefern dir zum einen also die hochgeladenen Prozent 0-100 welches du einfach deiner Progressbar zuordnen müsstest.
    Dann liefern sie auch die bereits hochgeladenen Bytes sovie die totalen Bytes der Datei, mithilfe des 3-Satzes könntest dir daraus auch selbst die Prozent ausrechnen.
    Aber du kannst sie auch nutzen um in einem Label anzuzeigen z.B. "Upload 56kB von 2333kB".

    Also setzte dich mal hin und fange an zu lernen und erstelle dein Programm nicht aus zusammenkopierten Snippets aus dem INet.