Italian Esportare un file da App ad una cartella di un sito Web

toro1950

Active Member
Licensed User
Buon Weekend, ho necessità di esportare un file dalla cartella file. internal ad un cartella del mio sito web
ho provato con questo codice ma non funziona
B4X:
Sub button3_click
    testo= nomemiofile
    If File.Exists(File.DirInternal,testo) Then
        ftp.Initialize("FTP","www.miosito.it/Public/cartelladest",21,"xxxxx@aruba.it","xxxxxx")
        ftp.PassiveMode = True
     ftp.UploadFile(File.DirInternal,testo,True,testo)
            
    End If
End Sub

ho provato anche con ftp.Initialize("FTP","www.miosito.it/miosito.it/Public/cartelladest",21,"xxxxx@aruba.it","xxxxxx")
visto che il mio sito ha il backup giornaliero e mensile senza successo.
non ho errori segnalati
 

toro1950

Active Member
Licensed User
Ho verificato che il file da trasferire esiste, e così è, ho modificato il codice come nel link che mi hai iniviato ma non funziona,
non ho nessuna risposta da wait for
B4X:
testo=myfile
    if File.Exists(File.DirInternal,testo) Then
        ToastMessageShow(testo,False) ' qui mi restituisce il nome del file
        ftp.Initialize("FTP","www.miosito.it/Public/cartelladest",21,"xxxxx@aruba.it","xxxxxx")
          'ftp.PassiveMode = True
        
        Dim sf As Object = ftp.UploadFile(File.DirInternal, testo, False, testo")
    
        Wait For (sf) ftp_UploadCompleted (ServerPath As String, Success As Boolean)
        If Success Then
        ToastMessageShow("file trasferito",False)
        Else
            ToastMessageShow("Errore uploading",False)
        End If
    
    End If

Non riesco a capire dove sbaglio
 

Xfood

Expert
Licensed User
Hai provato ad inviare il file con un client ftp sul tuo sito, per vedere se hai accesso alle cartelle con i parametri che metti nella tua app.
 

AlpVir

Well-Known Member
Licensed User
Longtime User
Hai i permessi di scrittura in quella specifica cartella ?
Puoi anche usare il protocollo http (purchè nel tuo sito tu abbia una pagina dinamica pronta a ricevere il file)
B4X:
HttpClient1.PostFile("https://" & sitomio & "/cartella/ricevi.asp?" & Parametri,cartellalocale,nomefile)
 
Last edited:

toro1950

Active Member
Licensed User
Xfood con i stessi parametri ftp invio un file sulla stessa cartella del mio sito web da un mio software su pc, poi da questa cartella effettuo il Download dall'app, ora dall'app vorrei trasferire un file, in effetti un database, creato dall'app ed inviarlo sulla stessa cartella e poi effettuare il download dal mio software dal pc. Non so se esitono altre soluzioni. con FilZilla che utilizza i stessi parametri effettuo sia l'upload che il download. ho provato a cambiare alcuni parametri copiandoli dal mio software su pc ma non cambia nulla, non riscontro errori ma neanche una risposta e upload. Questo è l'ultimo codice utilizzato
B4X:
Sub button3_Click
    testo =nomefile
    
    If File.Exists(File.DirInternal,testo) Then
        Msgbox(testo,"ok_")
        ftp.Initialize("FTP","www.miosito.it/miosito.it/Public/cartelladest/",21,"xxxxx@aruba.it","xxxxxx")
        ftp.PassiveMode = True
        
        Dim sf As Object = ftp.UploadFile(File.DirInternal,testo,True,testo)
    
        Wait For (sf) ftp_UploadCompleted (ServerPath As String, Success As Boolean)
        If Success Then
        ToastMessageShow("file was uploaded successfully",False)
        Else
            Log("Error uploading file")
        End If
    
    End If
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Premetto che non ho mai usato FTP con B4A, ma dal tuo esempio che hai scritto, confrontandolo con l'esempio che ha indicato @Sagenut direi che:
1) nel comando ftp.initialize tu hai specificato sia il nome del server sia la cartella di destinazione, mentre nell'altro esempio è specificato solo il nome del server
2) nel tuo esempio la variabile "testo" contiene il nome del file e basta, mentre nell'esempio di @Sagenut il nome del file di destinazione è preceduto da una "/" che serve proprio per specificare la cartella di destinazione

prova con:

B4X:
If File.Exists(File.DirInternal,testo) Then
        Msgbox(testo,"ok_")
        ftp.Initialize("FTP","www.miosito.it",21,"xxxxx@aruba.it","xxxxxx")
        ftp.PassiveMode = True
      
        Dim sf As Object = ftp.UploadFile(File.DirInternal,testo,True,"/miosito.it/Public/cartelladest/" & testo)
  
        Wait For (sf) ftp_UploadCompleted (ServerPath As String, Success As Boolean)
        If Success Then
            ToastMessageShow("file was uploaded successfully",False)
        Else
            Log("Error uploading file")
        End If
  
    End If
 

BlueVision

Active Member
Licensed User
Longtime User
Non dimenticare di chiudere anche la connessione FTP... (FTP.Close)
Forse ha senso provare prima a stabilire una connessione FTP e leggere una cartella?
Tuttavia, il codice seguente non è stato testato. L'ho copiato da uno dei miei programmi e ho cercato di adattarlo un po'...

B4X:
Private Sub FTP_GETLIST
    FTPList1.Initialize
    FTP.Initialize("FTP", "YourSite", Port, "User", "Password")
    FTP.PassiveMode = True
    FTP.List("YourFolder")
    FTP.Close
End Sub

Private Sub FTP_ListCompleted (ServerPath As String, Success As Boolean, Folders() As FTPEntry, Files() As FTPEntry)
    If Success = False Then
        Log ("No Connection" & LastException.Message)
    Else
        Log Connection.Text = "Connection established"
        For i = 0 To Folders.Length - 1
            Log(Folders(i).Name)
        Next
        For i = 0 To Files.Length - 1
            Log(Files(i).Name & ", " & Files(i).Size & ", " & DateTime.Date(Files(i).Timestamp))
            FTPList1.Add(Files(i).Name)
        Next
        Log (Files.Length & " file(s) found")
    End If
End Sub
 
Last edited:

toro1950

Active Member
Licensed User
Grazie sirjo66, in questo modo funziona, grazieeeeeeeeeeeeeeeee!!!!!
Grazie anche gli altri che si sono interessati, BluVision, AlpVir, Xfood, e Sagenut che dai suoi preziosi consigli
non sono riuscito a risolvere

 

Sagenut

Expert
Licensed User
Longtime User
Ringrazio @sirjo66 per aver trovato il tempo di scrivere il pezzo di codice.
Io non sono a casa e non avevo modo.
 

LucaMs

Expert
Licensed User
Longtime User
Grazie sirjo66, in questo modo funziona, grazieeeeeeeeeeeeeeeee!!!!!
Grazie anche gli altri che si sono interessati, BluVision, AlpVir, Xfood, e Sagenut che dai suoi preziosi consigli
non sono riuscito a risolvere

Puoi "segnare" la risposta di @sirjo66 come "Soluzione"
(cosa che con i miei non fanno mai, per cui risulta che io abbia dato ben poche "soluzioni", cosa non vera, malgrado sia vero che ormai è già tanto se rispondo del forum italiano. Un tempo scrivevo una ventina di post al giorno (risposte, ovviamente), "oggi" (da parecchio), evito, per vari motivi).
 

sirjo66

Well-Known Member
Licensed User
Longtime User
Puoi "segnare" la risposta di @sirjo66 come "Soluzione"

Sì, è cosa buona e giusta, però ho notato che questa cosa si può fare solo sul forum internazionale, non su quello italiano (almeno nel mio browser è così) e non ho mai capito perchè

ormai è già tanto se rispondo del forum italiano

scriverai anche poco, ma sei comunque la nostra colonna portante
 

toro1950

Active Member
Licensed User
Scusa LucaMs. ho letto solo adesso il tuo post, non so dove segnare la risposta come soluzione, dalla risposta di sirjo66 sembra che non si possa fare.
 
Top