Création de dossiers, copie de fichiers par ftp en vb.net

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 970 fois - Téléchargée 18 fois

Contenu du snippet

Un extrait de code que j'ai créé pour synchroniser un web local avec un web distant.
cf http://claude.barbe3.free.fr/Wformation/barbe/logique/ToursDeHanoi/ToursDeHanoi.htm
cela peut vous être utile....
Test connection site par requête http
Création d'un dossier en FTP
Transfert d'un fichier local en FTP

il faut bien évidement définir les paramètres
adressehttp,
ftpdistant,
user
pass
et les fullpath de fichlocal et fichdistant

Source / Exemple :


dim SousReseau as boolean = TestInternetHttp(ByVal adressehttp As String)    

Private Function cree_dossier_FTP(ByVal doss) As Boolean
        Dim erreur As String = ""
        If SousReseau Then
            Dim requete As FtpWebRequest = Nothing
            Dim reponse As FtpWebResponse = Nothing
            Try  'essai de création du dossier : envoi de la requete
                requete = CType(FtpWebRequest.Create(New Uri(doss)), FtpWebRequest)
                requete.Method = WebRequestMethods.Ftp.MakeDirectory
                requete.UseBinary = True
                requete.Credentials = New NetworkCredential(user, pass)
                reponse = CType(requete.GetResponse, FtpWebResponse) 'on attend la réponse
                requete.Abort() 'on se déconnecte
                If reponse.StatusCode = FtpStatusCode.PathnameCreated Then
                    Return True 'reussite de la création du dossier
                Else
                    erreur = reponse.StatusCode.ToString
                End If
            Catch generatedExceptionVariable0 As WebException
                erreur = generatedExceptionVariable0.Message
            Catch generatedExceptionVariable1 As Exception
                erreur = generatedExceptionVariable1.Message
            End Try
            If erreur.Contains("550") Then Return True 'car l'erreur provient de la préexistence du dossier
        Else
            erreur = "Non connecté - Le site distant " + FTPDistant + "n'est pas accessible."
        End If
        MsgBox(erreur)
        Return False
    End Function
    Private Function Transfert_FTP(ByVal fichlocal, ByVal fichdistant) As Boolean  'teste si dossier existe, sinon le crée , et transfère le fichier
        Dim erreur As String = ""
        If Not SousReseau Then
            erreur = "Vous n'êtes pas connecté - " + FTPDistant + " inaccessible."
          Else
            Try 'premier essai d'upload 
                My.Computer.Network.UploadFile(fichlocal, fichdistant, user, pass, True, 30000)
                Return True 'réussite
            Catch ex As Exception 'il y a erreur
                Dim dosscree = dossier(fichdistant) 'on traite le cas du dossier manquant sur le site distant
                If cree_dossier_FTP(dosscree) Then
                    Try 'essai de copie du fichier 
                        My.Computer.Network.UploadFile(fichlocal, fichdistant, user, pass, True, 30000)
                        Return True  'sortie avec réussite de la copie
                    Catch exept As Exception
                        erreur = exept.Message
                    End Try
                End If
            End Try
        End If
        MsgBox(erreur)
        Return False
    End Function

    Private Function TestInternetHttp(ByVal adressehttp As String) As Boolean
        '--- Déclaration des variables de la fonction
        Dim requete As HttpWebRequest = Nothing
        Dim reponse As HttpWebResponse = Nothing
        '--- Suivi des erreurs rencontrées
        Try
            requete = CType(WebRequest.Create(adressehttp), HttpWebRequest)
            reponse = CType(requete.GetResponse, HttpWebResponse)
            requete.Abort() '--- Déconnexion
            If reponse.StatusCode = HttpStatusCode.OK Then
                Return True
            Else
                Return False
            End If
        Catch generatedExceptionVariable0 As WebException
            Return False
        Catch generatedExceptionVariable1 As Exception
            Return False
        End Try
    End Function

Conclusion :


pour voir une application pour une page de mise à jour automatique,
complétant l'utilitaire Publier avec clickonce,
http://claude.barbe3.free.fr/Wformation/barbe/logique/ToursDeHanoi/ToursDeHanoi.htm

A voir également

Ajouter un commentaire

Commentaires

cs_bidouille007
Messages postés
263
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
22 décembre 2012
1 -
personne ne sait pour le n° de port et l'hote ?
cs_zozo14
Messages postés
46
Date d'inscription
jeudi 2 novembre 2006
Statut
Membre
Dernière intervention
5 juin 2010
-
En général le port n'est pas demandé. C'est le serveur FTP qui le définira.
L'appel du upload, pour répondre à ta question :
My.Computer.Network.UploadFile(fichlocal (c:/rep/tonfichier), fichdistant (ftp://ftpperso.free.fr/nomdistant) , identifiant, mot de pass, True (avec barre de progression visible) , 30000 (délai avant deconnexion en ms))
cs_bidouille007
Messages postés
263
Date d'inscription
jeudi 11 septembre 2008
Statut
Membre
Dernière intervention
22 décembre 2012
1 -
bonjour zozo14

je me posais juste la question du port pour le ftp se définit où et l'hôte genre pour free ftpperso.free.fr on le met à quel endroit ?

sinon le code est suffisamment concis pour être compréhensible.
cs_zozo14
Messages postés
46
Date d'inscription
jeudi 2 novembre 2006
Statut
Membre
Dernière intervention
5 juin 2010
-
j'ai trouvé sur le net un test de connection trés fiable :
Private Function TestConnection() As Boolean
'à partir de Vista
Dim g As System.Guid = New System.Guid("{DCB00C01-570F-4A9B-8D69-199FDBA5723B}")
Dim networkListManager As Object = Activator.CreateInstance(Type.GetTypeFromCLSID(g))
Return networkListManager.IsConnectedToInternet()
End Function

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.