Italian caricare un file da android a FTP e in caso di successo spostare il file

tmtube73

Active Member
Licensed User
avrei necessità di caricare un singolo file su FTP e attendere finchè non è stato completamente caricato
se il caricamento ha avuto successo e solo in quel caso il file dalla cartella File.DirRootExternal & "/servizifoto"
viene spostato in File.DirRootExternal & "/servizifoto/caricati"

Grazie a tutti.
 

amorosik

Expert
Licensed User
Ti consiglio di dettagliare meglio le tue richieste, per chi cerca di aiutare e' molto importante capire il contesto ed esattamente l'obiettivo da perseguire
In questo caso capire se il client ftp sia per Android o per pc sarebbe importante, come anche il tipo di file se solamente con caratteri leggibili o file binari
Supponendo serva per client su Android, seguire il classico tutorial sulla comunicazione ftp dovrebbe essere ampiamente sufficiente sia per ottenere il trasferimento del file
Per lo spostamento successivo, mi risulta esista il comando 'rename' ma non tutti i server ftp lo 'comprendono'
E quindi, volendo agire solamente dal client ftp, per sicurezza tocca trasferire lo stesso file sulla directory secondaria
Oppure bisogna mettere 'qualcosa' lato server, che attenda i file in arrivo, ne testi la possibile apertura in esclusiva (file copiato completamente) e poi lo sposti sulla directory secondaria
 

tmtube73

Active Member
Licensed User
scatto una foto su android e viene salvata sullo smartphone con nome foto.jpg nella cartella File.DirRootExternal & "/servizifoto"
questa foto devo caricarla su un hosting pensavo attraverso protocollo ftp
una volta che il trasferimento della copia è avvenuto devo spostare la foto di nome foto.jpg sul dispositivo android da File.DirRootExternal & "/servizifoto" a
File.DirRootExternal & "/servizifoto/copiate"

mi sembra che il tuo esempio faccia al caso mio, lo provo grazie.
 

drgottjr

Expert
Licensed User
Longtime User
non c'e "spostare" in b4a; devi copiare (da una cartella ad un'altra) e doppo cancellare (il file della prima cartella). dopo avere verificato l'esistenza del file nella seconda cartella...

se non ti piace utilizzare copiare ---> cancellare, puoi usare il codice java in questo post:


seconda pagina, post #26
 

Star-Dust

Expert
Licensed User
Longtime User
Si potrebbe usare il comando in Java volendo

B4X:
Sub FileMove(SourceFolder As String, SourceFile As String, TargetFolder As String, TargetFile As String) As Boolean
   Dim source, target As JavaObject
   source.InitializeNewInstance("java.io.File", Array(SourceFolder, SourceFile))
   target.InitializeNewInstance("java.io.File", Array(TargetFolder, TargetFile))
   Return source.RunMethod("renameTo", Array(target))
End Sub
Vedi

Comunque tieni conto di non poter accedere alla cartella RootExternal con le versioni più recenti di Android. Meglio salvare la foto su una cartella interna e poi con la libreria Net puoi inviare il file a un server ftp
 
Last edited:

udg

Expert
Licensed User
Longtime User
Si potrebbe anche solo rinominare i file inviati preponendo un "inv_" al nome originale e lasciando tutto nella cartella iniziale. Poi, su comando dell'utente o dopo un certo numero di giorni, potrebbero essere eliminate tutte quelle che, appunto, iniziano per "inv_" (oppure cui è stato cambiata l'estensione o qualunque altro criterio adottato per distinguerle da quelle "attive")
Se l'app prevede un DB, basterebbe utilizzare un flag nel DB per individuare quelle da conservare e quelle da eliminare.
Insomma, come al solito, di modi per risolvere un problema ce ne sono a decine :)
 

amorosik

Expert
Licensed User
Ma quale sarebbe lo scopo di spedire su una directory e poi spostare il file su altra directory?
 

tmtube73

Active Member
Licensed User
una cartella in android contiene 10 foto se in quel momento il caricamento online non va a buon fine per connessione dati assente o altri problemi le foto restano li.
quando invece la funzione che fa l'upload restituisce "OK il caricamento su ftp ha avuto successo" allora vorrei togliere quella foto da dove si trova per non caricarla al prossimo tentativo, le foto già caricate le sposto quindi nella cartella "caricate"
 
Top