Asp.net - comment faire du transfert ftp à partir d'une application asp.net

Description

Dans le cadre de système d'information hétérogène le transfert de fichiers entre Systèmes différents se fait couramment en FTP.
Passage de données fichiers par exemple :
- Windows vers Unix
- Windows vers AS400
- Windows vers Serveur Web déporté (cas de site Hébergé)

Imaginons le cadre d'une entreprise avec un portail Intranet et un Site Web public, on souhaite faire une gestion sur l'Intranet des données publiées sur le serveur Internet, le transfert peut se faire alors de 2 façons :
- Webservice d'écoute sur le serveur Web qui attend de recevoir un message suivi du transfert des données
- Transfert des fichiers directement par FTP du serveur Intranet vers le serveur WEB

On peut même associer les 2, le Webservice pour les données qui seront stockées en Base de Données et le FTP pour le transfert des données Fichiers (Images, PDF, fichiers DOC, ...).

Les Classes ont été créées par Pieter Philippaerts (en C# et VB.NET) et sont disponible sur le site de www.allapi.net :
- VB.NET : http://www.allapi.net/classlib/class.php?id=23
- C# : http://www.allapi.net/classlib/class.php?id=24

A partir de ces classes (non modifiées), j'ai créé un projet de type Bibliothèque de classes qui vous fourni la DLL directement utilisable.

-------

Après avoir référencé ce projet dans votre solution (cf : http://www.asp-php.net/tutorial/asp.net/solution_globale.php), il vous suffit alors d'ajouter une fonction de ce type dans votre propre projet.

Source / Exemple :


' Methode d'utilisation dans votre projet ASP.NET

' -----------------------------------------------------
Private Function UploadFichier(ByVal CheminFichier As String, ByVal nomfichier As String) As Boolean
 ' Prend le fichier du chemin transmis et l'Upload sur le serveur Voulu
 Dim Envoie As New FtpConnection()

 ' Parametres de la connexion

 ' Login et Mot de passe du compte FTP utilisé
 Envoie.Username = UserFTPServer
 Envoie.Password = passwdFTPServer

 ' Adresse du Serveur FTP (IP ou URL)
 Envoie.Hostname = HostFTPServer

 ' Si autre port que le 21 (par défaut)
 Envoie.Port = PortFTPServer

 ' Si besoin de passer en PASV il faut le mettre à true
 Envoie.Passive = False

 'connexion avec le serveur
 Envoie.Connect()

 If Envoie.IsConnected Then
  ' Changement de répertoire courant si besoin
  Envoie.ChangeWorkDir(RemotePathFTPServer)

  ' Envoie le fichier transmis a partir de son répertoire courant vers le fichier de destination en mode ASCII (texte) 
  Envoie.UploadFile(CheminFichier, nomfichier, FtpConnection.StreamModes.ASCII)
  Envoie.Disconnect()
  Return True
 Else
  Return False
 End If
End Function

' ---------------------------------------
' Utilisable de la facon suivante : 

Dim ResulUpload As Boolean = False
ResulUpload = UploadFichier("C:\MonFichier.txt", "NomDestination.txt")

Conclusion :


Ayant beaucoup cherché cette solution je profite de cet article pour remercier le codeur de ces Classes qui m'ont rendu énormément service et vous de même je l'espère.

Bon coding.

Romelard Fabrice (Alias F___)

Codes Sources

A voir également

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.