[VB.NET] Déplacer un fichier sur FTP
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:
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 |