begin process at 2010 03 12 12:24:45
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > ASP.NET - COMMENT FAIRE DU TRANSFERT FTP À PARTIR D'UNE APPLICATION ASP.NET

ASP.NET - COMMENT FAIRE DU TRANSFERT FTP À PARTIR D'UNE APPLICATION ASP.NET


 Information sur la source

Note :
5,33 / 10 - par 3 personnes
5,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Source .NET ( DotNet ) Niveau :Expert Date de création :29/01/2003 Date de mise à jour :29/04/2003 12:55:00 Vu / téléchargé :34 955 / 2 014

Auteur : fabrice69

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note


 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_g lobale.php), il vous suffit alors d'ajouter une fonction de ce type dans votre propre projet.  

Source

  • ' 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")
' 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___)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source .NET (Dotnet) SHAREPOINT 2007 - OBTENIR LA LISTE DES WEBPARTS DANS UNE PAG...
Source .NET (Dotnet) SHAREPOINT 2007 - OBTERNIR LA LISTE DES FEATURES D'UN SITE
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES COLLATIONS SHAREPOINT...
Source avec une capture Source .NET (Dotnet) SHAREPOINT 2007 - CHARGER LA LISTE DES LANGUES INSTALLÉES DA...
Source .NET (Dotnet) C# - FONCTION TRÈS SIMPLE POUR ENVOYER UN MAIL VIA SMTP

 Sources de la même categorie

Source avec Zip UPLOAD ET SA GESTION VIA FSO par Caius_junioricus
Source avec Zip Source .NET (Dotnet) CLASSE AVEC QUE DES MEMBRES ET DES MÉTHODES STATIQUES POUR G... par tikrimi
Source .NET (Dotnet) ASP.NET - COMMENT OBTENIR LE CONTENU D'UNE PAGE WEB DISTANTE... par fabrice69
Source .NET (Dotnet) CLASSE .NET LISTANT LES ADRESSES MAC D'UNE MACHINE - COMPATI... par aKheNathOn
PING D'UNE LISTE DE POSTE : WHOSBAD par defrance

Commentaires et avis

Commentaire de Focalizer le 01/02/2003 18:32:27

Salut,

J'ai voulu tester ta sources, aparament, la connection et tout cela marche bien. Mais lorsque je veux faire un getlist, tout ce qu'il me renvois c'est un true. j'airais préféré avoir le listing du dossier ;).

Peut-tu m'aider ?

Merci d'avance.

Commentaire de fabrice69 le 03/02/2003 14:23:49 administrateur CS

Tu as toute la doc d'utilisation de la classe sur le site d'origine. Regarde dedans et dans le source des classe.
N'ayant pas de temps disponible je ne peux en faire plus.

F___

Commentaire de Krapno le 14/08/2003 10:19:56

Salut, comment utiliser ce projet sans Visual Studio .NET ? Mon hébergeur supporte la technologie .NET, mon site est en ASP (tout court, écrit au bloc-note) et je voudrais pouvoir implémenter votre fonction mais je ne sais pas comment ? Merci de votre aide !

Commentaire de ipfixe le 22/07/2005 21:40:53

Yep moi je cherche a savoir quelle est la limitation de la taille du fichier a uploader ??..!! il y'a surement un rapport avec TimeOut du serveur non ?

Commentaire de fabrice69 le 25/07/2005 15:49:57 administrateur CS

Bonjour,
Ce n'est pas la taille du fichier qui va bloquer mais bien le time out.
Il faut donc modifier cette partie dans le script ou sur le serveur.
Romelard Fabrice.

Commentaire de DeathAngel le 20/02/2006 18:09:50

Salut F_____, salut tout le monde
Je viens de récupérer ton source pour déposer des fichier xml sur un serveur ftp (rien de bien méchant).
Mais j'arrive pas à faire tourner. J'ai une erreur DNS du socket :
11004 : Le nom demandé est valide et a été trouvé dans la base de données, mais il ne dispose pas des données associées recherchées.

Cela se produit dans la fonction Connect(), 3ème ligne.
clientSocket.Connect(new IPEndPoint(Dns.Resolve(remoteAddress).AddressList(0), remotePort))

Je suppose qu'il ne trouve pas le serveur, mais c'est bizarre, car je me connecte très bien à la main (par IE), avec la même adresse.

Bref, si vous avez une petite idée, je suis preneur.

Merci et @peluche
DA

Commentaire de fabrice69 le 20/02/2006 22:42:06 administrateur CS

Bonjour,

Est-ce que le serveur qui exécute le code arrive a résoudre le nom de domaine transmis.
Pour tester cela, donnez directement l'IP du serveur distant et exécutez le code.
Cordialement
Romelard Fabrice

Commentaire de cyd2025 le 05/07/2006 15:33:29

Bonjour,

je viens d'intégrer ce code dans une application c# ASP.NET, et j'avoue que cela marche tip top car cela fait un moment que je cherche cette solution, donc un grand merci à ceux qui l'ont développé ;)
Cependant, j'ai qq soucis :


- Sur ma machine de developpement autonome :
si je suis en mode passif ou actif, le code fonctionne très bien


- Sur mon serveur IIS connecté sur le web à travers un routeur (les ports 20 et 21 sont ouverts et redirigés correctement) :

si je suis en mode actif :
l'upload s'arrête en cours de route et la fonction "Envoie.UploadFile" me renvoie "false" depuis un poste sur internet,
par contre fonctionne très bien tant que je reste dans mon réseau local.

si je suis en mode passif :
l'upload ne fonctionne pas aussi bien depuis mon réseau local que depuis un poste sur internetµ.
J'ai trappé l'erreur suivante : "Object reference not set to an instance of an object"
Erreur que je n'ai pas quand j'execute le code depuis mon poste de developpement autonome

Est-ce que quelqu'un a une solution, car là je bloque.
Faut configurer quelque chose de spécifique dans le fichier web.config ?
Sur IIS ?
Dans les fichiers de config du framework ASP.NET ?

Ma config :
IIS 5.x
Poste de dev : Win XP Pro avec Visual Studio .NET 2003, framework 1.1
Serveur : Win XP Pro avec IIS 5.x, framework 1.1

Merci d'avance

Commentaire de fabrice69 le 05/07/2006 16:51:24 administrateur CS

Bonsoir,

Désolé mais je ne pourrais pas vous aider sur cette question

Cordialement
Romelard Fabrice

Commentaire de cyd2025 le 06/07/2006 09:22:12

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

Commentaire de cyd2025 le 06/07/2006 14:27:55

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

Commentaire de fabrice69 le 06/07/2006 16:11:29 administrateur CS

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

Commentaire de cyd2025 le 06/07/2006 16:38:02

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

Commentaire de fabrice69 le 06/07/2006 17:22:58 administrateur CS

Vous avez un exemple ici :
- http://www.aspfr.com/codes/ASP-NET-COMMENT-FAIRE-UPLOAD-FICHIER-SIMPLE-CLIENT_9090.aspx

Fabrice

 Ajouter un commentaire




Nos sponsors


Appels d'offres

Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales