begin process at 2008 05 17 07:28:11
1 173 919 membres
51 nouveaux aujourd'hui
13 973 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

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


Information sur la source

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é: 27 750 / 1 722

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

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_globale.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___)
Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

  • signaler à un administrateur
    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.

  • signaler à un administrateur
    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___

  • signaler à un administrateur
    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 !

  • signaler à un administrateur
    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 ?

  • signaler à un administrateur
    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.

  • signaler à un administrateur
    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

  • signaler à un administrateur
    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

  • signaler à un administrateur
    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

  • signaler à un administrateur
    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

  • signaler à un administrateur
    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

  • signaler à un administrateur
    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

  • signaler à un administrateur
    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

  • signaler à un administrateur
    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

  • signaler à un administrateur
    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

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Boutique

Boutique de goodies CodeS-SourceS