Italian AIUTO DOWNLOAD

max611

Active Member
Licensed User
Longtime User
ciao ragazzi, ho un problema con il download via FTP, a me risulta instabile riesce 2 su 5
a qualcuno di voi funziona bene?
sapete se c'è qualcosa d'altro che si può usare per scaricare file che non sia FTP?
ho 3 app che utilizzano tutte questo FTP, ora mi sono stancato devo trovare una soluzione.
:(qualcuno mi può aiutare?
GRAZIE
 

LucaMs

Expert
Licensed User
Longtime User
Una soluzione diversa sarebbe creare un proprio server usando B4J, ma dipende dal fatto che tu abbia o meno la macchina fisica sulla quale installare il server a tua disposizione, altrimenti dovresti usare un host VPS, sempre per questo.

Invece, direi di scovare il problema sul tuo FTP (senza altre informazioni non è possibile capire quale sia, ovviamente).


P.S. Ah, ci sono altre soluzioni, come i Cloud, ma di solito non li prendo in considerazione perché in molti casi si dovrebbe usare un Cloud dell'utente dell'app.
 

max611

Active Member
Licensed User
Longtime User
grazie luca, anch'io se possibile vorrei sistemare FTP (anche perché altrimenti dovrei reimpostare tutto).
vediamo il mio codice:




Sub Activity_Create(FirstTime As Boolean)
...
FTP.Initialize("FTP", "ftp.la***.it", 21, "*****@aruba.it", "*******")
FTP.DownloadFile("/la***.it/file/***.*", False, File.DirRootExternal, "/ultimo.nd")
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 ToastMessageShow("Collegamento NON Creato", False)
If Success=True Then
ToastMessageShow("Collegamento Creato", False)
ricava(File.DirRootExternal, "ultimo.nd)
carica
End If
End Sub

rende l'idea? cosa c'è che non va?
 

LucaMs

Expert
Licensed User
Longtime User
Intanto direi che dovresti inizializzare FTP solo quando FirstTime è True.

Poi, visualizzerei l'avanzamento solo dopo tot byte ricevuti (ma questo non può essere il problema).

Infine, non so cosa facciano le due routine ricava e carica ma immagino che tu abbia problemi (2 su 5, come dicevi) nel senso che ottieni Success = False.

Prova a vedere se la faccenda migliora con l'inizializzazione.


[dato che 3 volte su 5 funziona, non mi metto ad indagare sui parametri di Initialize e DownloadFile]
 

udg

Expert
Licensed User
Longtime User
Ciao Max,

presumo che il codice presentato nel post #3 sia una semplificazione di quello reale.
A parte il suggerimento di utilizzare il tag "[ code ]" per semplificarne la lettura, in esso riscontro qualche possibile problema:

1. FTP.Initialize dovrebbe essere posto in dipendenza di FirstTime
2. FTP.DownloadFile ha come quarto parametro "/ultimo.nd" ma lo slash non dovrebbe esserci; sul primo parametro non saprei se sia corretto per i server Aruba, ma nel caso potresti controllare accedendo tramite client FTP (es. FileZilla) per riscontrare in quale dir vai a finire dopo il login.
3. non vedo FTP.Close o FTP.CloseNow

Edit: ciao LucaMs, fatto colazione? UUUHHHHHHHHH
 

max611

Active Member
Licensed User
Longtime User
grazie ragazzi,
per prima cosa i parametri sono perfetti, provati e riprovati con filezilla.
primo problema è che success=false 3 su 10
a volte scarica il file a 0 byte
FTP.Close lo metto all'uscita della app, comunque ho provato a metterlo in svariati posti ma non risolve.
per quanto riguarda firstTime, mi sembra di aver provato anche quello in questo modo
If FirstTime Then
FTP.Initialize("FTP", "ftp.la***.it", 21, "*****@aruba.it", "*******")
end if
giusto?
adesso proverò con l'inizializzazione, speriamo bene.
Grazie ancora vi faccio sapere
 

max611

Active Member
Licensed User
Longtime User
ah dimenticavo il post #3 è quello reale, i ... iniziali si riferiscono al codice di routine
 

Picena Informatica

Active Member
Licensed User
Longtime User
Se l'oggetto ftp non è globale quando giri il telefono si reinizializza e si ferma il download
 

max611

Active Member
Licensed User
Longtime User
no il telefono è fisso in orizzontale.
sembra come se il comando 'FTP.DownloadFile' non lo esegua
puo essere qualche bug?
sto impazzendo
 

udg

Expert
Licensed User
Longtime User
Una domanda: perché il fatto che a volte (3 su 10, ma potrebbe essere qualunque altra proporzione) il Succes ritorna False dovrebbe essere considerato un problema del componente FTP e non un fatto "normale"?
Che possano avvenire dei timeout dovrebbe essere considerato normale. Potrebbero dipendere da diversi fattori su cui non abbiamo controllo diretto e quindi l'unica difesa sarebbe quella di agire di conseguenza nel codice (ripetendo il tentativo di download o avvisando l'utente o quello che risulta necessario fare in funzione del programma).

Un'istruzione tipo:
If Success = False Then Log(LastException.Message)
o similare ci direbbe anche il motivo del fallimento (non è detto che sia il timeout).

udg
 

max611

Active Member
Licensed User
Longtime User
ragazzi ho provato con closeNow nella Sub Activity_Pause
sembra funzionare;)
almeno 17 su 20
grazie udg
 
Top