German Download per FTP

peternmb

Well-Known Member
Licensed User
Longtime User
ich möchte einen größeren Download per FTP machen.
Wie kann ich im Programm feststellen wann dieser beendet ist?
Wie kann ich die Funktion "FTP_DownloadProgress" einsetzen, gibt es eine Möglichkeit für eine Fortschrittsanzeige Balken oder %?
Ein funktionsfähiges Beispiel würde mit das Verstehen erheblich erleichtern :sign0085:
So funktioniert es leider nicht, keine Ahnung warum:
B4X:
Sub Process_Globals
    Dim FTP As FTP
    'usw
End Sub

Sub Activity_Create(FirstTime As Boolean)
    If FirstTime Then
        FTP.Initialize("FTP", "ftp.example.com", 21, "user", "password")
    End If
    'usw
End Sub


Sub FTP_DownloadProgress (ServerPath As String, TotalDownloaded As Long, Total As Long)
Dim s As String
s = "Downloaded " & Round(TotalDownloaded / 1000) & "KB"
If Total > 0 Then s = s & " out of " & Round(Total / 1000) & "KB"
Log(s)
End Sub


Sub FTP_DownloadCompleted (ServerPath As String, Success As Boolean)
Log(ServerPath & ", Success=" & Success)
If Success = False Then Log(LastException.Message)
'
fertig = True
'
End Sub


Sub do_mein_download
    FTP.DownloadFile("/somefolder/files/1.zip", False, File.DirRootExternal, "1.zip")
    Dim fertig As Boolean  : fertig=False
    do while fertig = False
       wait(1)
       loop
    Msgbox("Download beendet!","")
End Sub
 

Kiffi

Well-Known Member
Licensed User
Longtime User
Wie kann ich im Programm feststellen wann dieser beendet ist?

mit FTP_DownloadCompleted (wie Du es ja auch in Deinem Code stehen hast).

Wie kann ich die Funktion "FTP_DownloadProgress" einsetzen, gibt es eine Möglichkeit für eine Fortschrittsanzeige Balken oder %?
zumindest den prozentualen Anteil kannst Du ja anhand der bereits
heruntergeladenen Datenmenge und der Gesamtgröße der Datei ermitteln.
Hast Du ebenfalls in Deinem Code stehen. Dort gibst Du ja auch eine Log-
Ausgabe aus. Was steht denn dort bei Dir? Eine Fortschrittsbalken-Anzeige
steht Dir mit dem Progress-View zur Verfügung.

So funktioniert es leider nicht, keine Ahnung warum:
Testest Du mit einem Emulator? Ansonsten wie geschrieben: Log-Ausgaben
beobachten und ggfs. hier mal posten.

habe den Code mal ein wenig modifiziert (fertig-Flag und Do-Loop-Schleife
entfernt). Probiers mal hiermit:
B4X:
[...]
Sub FTP_DownloadCompleted (ServerPath As String, Success As Boolean)
Log(ServerPath & ", Success=" & Success)
If Success = False Then Log(LastException.Message)

    Msgbox("Download beendet!","")

End Sub

Sub do_mein_download
    FTP.DownloadFile("/somefolder/files/1.zip", False, File.DirRootExternal, "1.zip")
End Sub

Grüße ... Kiffi
 

peternmb

Well-Known Member
Licensed User
Longtime User
dann sollte es doch eigentlich so funktionieren:
B4X:
Sub Update
  '
  pnlUP.Initialize("pnlUP")
  Dim bgnd As ColorDrawable
  bgnd.Initialize(Colors.Black, 5dip)
  pnlUP.Background = bgnd
  Activity.addView(pnlUP, 25%x,40%y, 400dip, 155dip)
  '      
  Dim lblUP As Label
  lblUP.Initialize("lblUP")
  lblUP.Text = "bitte warten, das Update wird heruntergeladen..."
  pnlUP.AddView(lblUP, 20dip, 10dip, 360dip, 20dip)     
  '
  prbUP.Initialize("prbUP")
  pnlUP.addView(prbUP, 20dip,45dip, 360,40) 
  '
  btnUP.Initialize("btnUP")
  btnUP.Text = "Download abbrechen"
  pnlUP.AddView(btnUP, 110dip, 105dip, 180dip, 40dip)  
  '
  FTPu.DownloadFile("/html/LFupdate/LF.apk", False, ListDir, "LFapk.tmp")
  '
End Sub


Sub FTPu_DownloadProgress (ServerPath As String, TotalDownloaded As Long, Total As Long)
  Dim s As String
  s = "Downloaded " & Round(TotalDownloaded / 1000) & "KB"
  If Total > 0 Then
    s = s & " out of " & Round(Total / 1000) & "KB"
    Log(s)
    '
    prbUP.Progress =  Round(TotalDownloaded / (Total/100) )
    '    
  End If 
End Sub

Da tut sich allerdings absolut nichts :BangHead:
 

peternmb

Well-Known Member
Licensed User
Longtime User
Danke, hat sich erledigt.

Ich mache den Download jetzt per httputils, funktioniert einwandfrei mit Fortschritts-Anzeige in einer Progressbar.
 
Top