Bonjour !

Voilà je me casse la tête depuis un petit moment sur une classe FTP.
J'ai bien entendu créé des méthodes Put / Get / rename et compagnie via FtpWebRequest et WebRequestMethods.

Tout ça fonctionne plutôt pas mal pour ma première source .net ^^

Mon souci :

Je voudrais créer une méthode Move pour déplacer un fichier se trouvant dans un répertoire du serveur FTP vers un autre répertoire se trouvant toujours sur le même serveur FTP.

J'ai fouiné quelque peu sur le net mais il semblerait que "Move" ne soit pas natif en FTP. Pourtant cela doit être possible car avec des logiciels comme FileZilla par exemple on peut le faire par un simple Glisser/déposer.

Ci-dessous un exemple de mon code pour la fonction Rename.
Je pense que cette fonction doit pouvoir être utilisée pour déplacer un fichier mais le FTP.RenameTo n'accepte qu'un nom de fichier et pas un chemin :'(

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 
    Public Function RenameFile(ByVal CheminFichier As String, ByVal NomfichierOriginal As String, ByVal NomFichierFinal As String) As Boolean
 
        Dim FTP As FtpWebRequest
        Dim Reply As FtpWebResponse
 
        Try
            If Left(CheminFichier, 1) <> "/" And Left(CheminFichier, 1) <> "\" Then CheminFichier = "/" & CheminFichier
            CheminFichier = Replace(CheminFichier, "\", "/")
            If Right(CheminFichier, 1) <> "/" And Left(CheminFichier, 1) <> "\" Then CheminFichier = CheminFichier & "/"
            FTP = DirectCast(FtpWebRequest.Create(p_HostIP & CheminFichier & NomfichierOriginal), FtpWebRequest)
 
            'info de connexion
            FTP.Credentials = New NetworkCredential(p_UserID, p_UserPWD)
            'Ferme la connexion apres le transfert
            FTP.KeepAlive = False
            'On veut un transfer binaire et pas textuel
            FTP.UseBinary = True
            'On défini la method. ici Downloadfile
            FTP.Method = WebRequestMethods.Ftp.Rename
            'On renomme
            FTP.RenameTo = NomFichierFinal
            'on récupère la reponse du serveur
            Reply = DirectCast(FTP.GetResponse(), FtpWebResponse)
            Reply.Close()
            Reply = Nothing
            FTP = Nothing
            Return True
        Catch
            If Not Reply Is Nothing Then Reply = Nothing
            If Not FTP Is Nothing Then FTP = Nothing
            p_LastErrorOccured = "Méthode RenameFile() a échoué. La raison invoqué est la suivante : " & vbCrLf & _
                     Err.Number & ": " & Err.Description
            Return False
        End Try
 
    End Function