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

Soyez le premier à donner votre avis sur cette source.

Vue 44 127 fois - Téléchargée 2 973 fois

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

Ajouter un commentaire

Commentaires

Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
5
Messages postés
6
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
15 mai 2006

Bonsoir,

effectivement, autant pour moi, je n'ai pas bien lu.

Auriez-vous une ou plusieurs idées de comment faire pour ajouter la couche d'upload depuis le client vers le serveur WEB puis faire le transfert FTP en asp.net (c#) .

J'ai commencer à regarder comment faire, et j'avoue qu'un coup de pouce serait le bien venu.

Merci d'avance pour votre aide
Cyd
Messages postés
1765
Date d'inscription
jeudi 12 octobre 2000
Statut
Modérateur
Dernière intervention
11 décembre 2013
5
Bonjour,

J'ai beau relire le message, il n'y a nulle part où a été dit que cela fonctionne depuis un poste client.
Il s'agit bien de communication entre 2 serveurs.
Pour faire le passage depuis le client, vous devez ajouter la couche d'upload depuis le client vers le serveur WEB puis faire le transfert FTP.
Cordialement
Romelard Fabrice
Messages postés
6
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
15 mai 2006

re bonjour,

en fait, j'ai trouvé ce qui ne vas pas :
j'ai tout fait en code behind en excution coté serveur.
Lorsque je passe à la fonction le chemin du fichier à uploader sur le poste client, en fait, il va le chercher sur le serveur, qui bien sur n'existe pas, c'est pour cela que l'upload échoue.

Comment avez-vous fait pour integrer ce bout code pour qu'il puisse s'executer sur le poste client et non sur le serveur ?
Avez-vous un exemple d'utilisation autre que la fonction ci-dessus ?

Merci d'avance,

Cyd
Messages postés
6
Date d'inscription
jeudi 3 novembre 2005
Statut
Membre
Dernière intervention
15 mai 2006

Bonjour,

merci pour votre réponse Fabrice, et suite à celle-ci,
j'ai re-vérifié, et il s'avère qu'en fait, cela marche très bien tant que je lance la manip sur la même machine qui fait à ce moment là client & serveur.

Par contre, dès que je fait la même manipulation avec un client différent que la machine qui fait serveur web avec IIS(en réseau local ou via internet),
la fonction "Envoie.UploadFile" me renvoie "false".

Est-ce que quand vous avez mis en place votre application avec ce bout de code,
vous avez fait un paramètrage quelconque sur votre IIS et/ou dans les fichiers de paramètrages de votre application ?

Merci d'avance
Cyd
Afficher les 14 commentaires

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.