Sincronizzare file su ftp

di il
6 risposte

Sincronizzare file su ftp

Ciao a tutti.

Ho un problema che non riesco a risolvere:

devo dare la possibilità all'utilizzatore di fare un “backup” dei file che ha creato coll'applicazione su uno spazio web. Fino a quando il trasferimento dei file è dal pc locale allo spazio web non ho nessun problema… riporto il codice che uso:

                Dim WithEvents Loader As New System.Net.WebClient
				Dim stFileInDB As String()

                stFileInDB = Directory.GetFiles(pathData, "") ' prendo il nome + percorso di tutti i file che ci sono nella cartella 'data'
                For q As Integer = 0 To UBound(stFileInDB)
                    Dim stFileInDBTemp As String = Path.GetFileName(stFileInDB(q)) ' elimino il percorso e tengo solo il nome del file
                    Loader.UploadFile(stServer + "\" + stFileInDBTemp, "STOR", pathData + "\" + stFileInDBTemp) ' faccio l'upload
                Next

il problema nasce quando devo fare il contrario… dal sito ftp alla cartella locale del pc: il mio problema è che non conosco a priori quali e quanti file ci sono sul sito ftp… mentre sul PC lo riesco a sapere utilizzando la funzione Directory.GetFiles, come posso fare lo stesso sull'FTP?

Mi aiutate per favore?

grazie a tutti.

6 Risposte

  • Re: Sincronizzare file su ftp

    L'ftp ha le stesse funzionalità del filesystem locale.

    quindi anche l'elenco di file e directory contenute in una directory data. 

    Certa qualche libreria che implementa un client ftp per dot. net

  • Re: Sincronizzare file su ftp

    Con quel codice non utilizzi ftp ma, con il webclient, una applicazione web per l'upload.

    Se hai anche un accesso ftp, devi collegarti con utente e password e puoi gestire, con appositi comandi, cartelle e file e decidere quale scaricare.

    Tuttavia ti sconsiglio di implementare il restore dei file del db nel programma perché è un'operazione pericolosa da affidare agli utenti.

    Lo dovrai fare tu, a mano, quando serve, fermando tutto e ragionando sui passi da fare.

  • Re: Sincronizzare file su ftp

    Ciao.

    22/03/2024 - oregon ha scritto:


    Con quel codice non utilizzi ftp ma, con il webclient, una applicazione web per l'upload.

    ok.

    22/03/2024 - oregon ha scritto:


    Se hai anche un accesso ftp, devi collegarti con utente e password e puoi gestire, con appositi comandi, cartelle e file e decidere quale scaricare.

    questo lo faccio nel mio programma in vb net… prima di eseguire l'upload inserisco le credenziali con:  

    Loader.Credentials = New NetworkCredential("utente", "password")

    quello che non riesco a fare è il download dal sito ftp di file di cui non conosco il nome e tantomeno non conosco il numero di file salvati dello spazio ftp. Cosa che faccio con una cartella locale utilizzando il comando Directory.GetFiles.

    non so se mi spiego bene… 

    nel mio programmino, quando l'utente preme un pulsante (tipo “sincronizza dal server”) il mio programma deve prendere tutti i file salvati in precedenza nello spazio ftp e salvarli nel computer. ok? Ma io non so quali e quanti file ci sono perché, essendo un programma multi utente, Pippo può aver fatto il backup in passato di 5 file, Pluto magari ne ha fatto uno di 12 file, ecc… quando Paperino vuole sincronizzare il suo programma con i dati dei suoi due colleghi deve poter fare il download di tutti e 17 file. Ok?

    Se utilizzo una risorsa locale del PC, una cartella condivisa, non ho problemi… il problema nasce quando devo fare questo con uno spazio ftp.

    qualche consiglio?

  • Re: Sincronizzare file su ftp

    Prova questo codice:

    Dim request As FtpWebRequest = FtpWebRequest.Create("ftp://ftp.example.com/directory")
    request.Credentials = New NetworkCredential("username", "password")
    request.Method = WebRequestMethods.Ftp.ListDirectory
    
    Dim response As FtpWebResponse = request.GetResponse()
    Dim streamReader As New StreamReader(response.GetResponseStream())
    
    Dim line As String
    Do Until streamReader.EndOfStream
        line = streamReader.ReadLine()
        ' Elabora il nome del file presente in "line"
    End While
    
    streamReader.Close()
    response.Close()
  • Re: Sincronizzare file su ftp

    Ho capito @salvodv, ma tu hai l'indirizzo e le credenziali del sito ftp? Sì o no?

  • Re: Sincronizzare file su ftp

    22/03/2024 - oregon ha scritto:


    Ho capito @salvodv, ma tu hai l'indirizzo e le credenziali del sito ftp? Sì o no?

    certo. Lo spazio ftp è mio. Voglio utilizzare uno spazio di cui io sono il proprietario dell'account.

    @Sirjo. il tuo codice funziona. Fa esattamente quello che volevo… c'è solo la cosa antipatica che ListDirectory mi fornisce pure, tra la lista dei file, anche “..” e “.” come se scrivessi l'istruzione DIR in ms-dos, però lo risolvo con una condizione if… end if. 

    grazie.

    grazie a tutti che mi avete letto e risposto.

    questo è proprio un bel forum 

Devi accedere o registrarti per scrivere nel forum
6 risposte