begin process at 2012 02 09 08:55:48
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Application

 > ENVOI DE FICHIER PAR FTP (SENDFILEFTP)

ENVOI DE FICHIER PAR FTP (SENDFILEFTP)


 Information sur la source

Note :
8,5 / 10 - par 4 personnes
8,50 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Application Niveau :Débutant Date de création :19/03/2003 Date de mise à jour :01/05/2003 02:29:06 Vu / téléchargé :14 113 / 1 844

Auteur : Trinita16

Ecrire un message privé
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note

 Description

Cette petite application permet de transferer les fichiers d'un répertoire sélectionner à un serveur FTP.

Facile a modifier pour faire du download de fichier (contactez moi :) )
Tout et dans le zip.

Pour éviter de télécharger le zip, je vous ai mis à dispo le code principa.  

Source

  • /* Contenu du main.h */
  • void SendFileFtp ( HWND, char [] );
  • /* DEFINE */
  • #define MAX_PATH 255
  • #define MAIN_LEN 255
  • #define NameFileIni "SendFileFTP.ini"
  • #define NameApp "SendFileFTP"
  • /*************************************************************/
  • /* Source du programme d'envoi de fichier pas protocol FTP
  • /*
  • /* Parametres :
  • /* 1. HWND du programme principal
  • /* 2. Repertoire to Send
  • /*
  • /* Retour :
  • /*
  • /* Créateur : Trinita
  • /* Copyright : Freeware
  • /* Date Création : 18/03/2003
  • /*
  • /* Date de Modification : 19/03/2003
  • /* Version : 1.0.0
  • /*
  • /************************************************************/
  • #include <string.h>
  • #include <stdio.h>
  • #include <Wininet.h>
  • #include <windows.h>
  • #include "main.h" /* Voir ci-dessus */
  • #include "logfile.h" /* Pour la fonction WriteInLogFile () */
  • #include "ressource.h" /* fichier .rc */
  • void SendFileFtp ( HWND hDlgSend, char DirFile[MAIN_LEN+1] )
  • {
  • /* Déclaration des variables */
  • /* init des variables */
  • char *Buffer = (char *) calloc(sizeof (char), MAIN_LEN+1);
  • char DirNameFileIni[MAIN_LEN+1]="";
  • char NameServeurFtp[MAIN_LEN+1]="";
  • char LoginFtp[MAIN_LEN+1]="";
  • char PwdFtp[MAIN_LEN+1]="";
  • char DirFtp[MAIN_LEN+1]="";
  • char FileToSend[MAIN_LEN+1]="";
  • bool ResultFtp;
  • char DirFileTmp[MAIN_LEN+1]="";
  • char TxtLog[MAIN_LEN+1]="";
  • /* Les handles */
  • HINTERNET hInternetSession; /* handle to internet connection */
  • HINTERNET hFTPSession; /* handle to FTP session */
  • HANDLE hfind; /* handle pour le parcours du dossier */
  • WIN32_FIND_DATA wfd; /* Structure du repertoire */
  • /* Récupération du chemin du fichier ini */
  • GetFullPathName( NameFileIni, MAIN_LEN+1, Buffer, NULL);
  • strcpy ( DirNameFileIni,Buffer );
  • /* Récupération des params */
  • GetPrivateProfileString ( "FTP" , "NAME_SERVEUR_FTP" , "" , NameServeurFtp , MAIN_LEN+1 , DirNameFileIni );
  • GetPrivateProfileString ( "FTP" , "LOGIN_FTP" , "" , LoginFtp , MAIN_LEN+1 , DirNameFileIni );
  • GetPrivateProfileString ( "FTP" , "PWD_FTP" , "" , PwdFtp , MAIN_LEN+1 , DirNameFileIni );
  • GetPrivateProfileString ( "FTP" , "DIR_FTP" , "" , DirFtp , MAIN_LEN+1 , DirNameFileIni );
  • /* Ouverture de la connexion */
  • hInternetSession = InternetOpen ( NameApp , INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
  • if ( hInternetSession == NULL )
  • {
  • /* Erreur dans l'ouverture de la connexion */
  • WriteInLogFile ( "Erreur dans l'ouverture de la connexion <InternetOpen>" );
  • exit;
  • }
  • /* Connexion au serveur FTP */
  • hFTPSession = InternetConnect ( hInternetSession, NameServeurFtp, INTERNET_DEFAULT_FTP_PORT, LoginFtp, PwdFtp, INTERNET_SERVICE_FTP, 0, 0);
  • if ( !hFTPSession )
  • {
  • WriteInLogFile ( "Erreur dans l'ouverture de la connexion ftp <InternetConnect>" );
  • exit;
  • }
  • else
  • {
  • /* Enregistrement des fichiers sur le serveur FTP */
  • /* Liste le contenu du répertoire et envoi fichier par fichier */
  • strcat ( DirFileTmp, DirFile );
  • strcat ( DirFileTmp, "\\*.*" );
  • hfind = FindFirstFile ( DirFileTmp, &wfd );
  • if (hfind != INVALID_HANDLE_VALUE)
  • {
  • do
  • {
  • if( wfd.cFileName[0] != '.')
  • {
  • /* Envoi du fichier courant */
  • strcpy ( FileToSend, DirFile);
  • strcat ( FileToSend, "\\");
  • strcat ( FileToSend, wfd.cFileName);
  • ResultFtp = FtpPutFile ( hFTPSession, FileToSend, wfd.cFileName, FTP_TRANSFER_TYPE_ASCII, NULL);
  • if ( !ResultFtp )
  • {
  • strcpy ( TxtLog, "Erreur Enregistrement du fichier ! <FtpPutFile>");
  • strcat ( TxtLog, FileToSend);
  • WriteInLogFile ( TxtLog );
  • }
  • }
  • }while(FindNextFile( hfind, &wfd));
  • FindClose(hfind);
  • }
  • /* Fermeture de la connexion ftp */
  • InternetCloseHandle ( hFTPSession );
  • }
  • /* Fermeture de la session */
  • InternetCloseHandle ( hInternetSession );
  • if ( strlen ( TxtLog) == 0)
  • {
  • MessageBox( hDlgSend ,"Opération terminée avec succès !!!!","Information",MB_OK|MB_ICONINFORMATION);
  • }
  • else
  • {
  • MessageBox( hDlgSend ,"Erreur dans l'envoi des fichiers consultez le fichier de trace !!!!","Erreur",MB_OK|MB_ICONWARNING);
  • }
  • return;
  • }
  /* Contenu du main.h */
void SendFileFtp ( HWND, char [] );

/* DEFINE */
#define MAX_PATH	255
#define MAIN_LEN	255

#define NameFileIni	"SendFileFTP.ini"
#define NameApp		"SendFileFTP"


/*************************************************************/
/*  Source du programme d'envoi de fichier pas protocol FTP	
/*						 
/*  Parametres :					
/*  1. HWND du programme principal			
/*  2. Repertoire to Send				
/*						
/*  Retour :
/*					
/*  Créateur : Trinita					
/*  Copyright : Freeware				
/*  Date Création : 18/03/2003				
/*						
/*  Date de Modification : 19/03/2003			
/*  Version : 1.0.0					
/*					
/************************************************************/

#include <string.h>
#include <stdio.h>
#include <Wininet.h>
#include <windows.h>

#include "main.h"	/* Voir ci-dessus */
#include "logfile.h"	/* Pour la fonction WriteInLogFile () */
#include "ressource.h"	/* fichier .rc */
	
void SendFileFtp ( HWND hDlgSend, char DirFile[MAIN_LEN+1] )
{
 /* Déclaration des variables */
 /* init des variables */
 char *Buffer = (char *) calloc(sizeof (char), MAIN_LEN+1);
 char DirNameFileIni[MAIN_LEN+1]="";				
 char NameServeurFtp[MAIN_LEN+1]="";
 char LoginFtp[MAIN_LEN+1]="";
 char PwdFtp[MAIN_LEN+1]="";
 char DirFtp[MAIN_LEN+1]="";
 char FileToSend[MAIN_LEN+1]="";
 bool ResultFtp;
 char DirFileTmp[MAIN_LEN+1]="";
 char TxtLog[MAIN_LEN+1]="";
	
 /* Les handles */
 HINTERNET hInternetSession;	/* handle to internet connection */
 HINTERNET hFTPSession;	/* handle to FTP session	*/
 HANDLE hfind;		/* handle pour le parcours du dossier */
 WIN32_FIND_DATA wfd;	/* Structure du repertoire */

 /* Récupération du chemin du fichier ini */
 GetFullPathName( NameFileIni, MAIN_LEN+1, Buffer, NULL);
 strcpy ( DirNameFileIni,Buffer );
	
 /* Récupération des params */
 GetPrivateProfileString ( "FTP" , "NAME_SERVEUR_FTP" , "" , NameServeurFtp , MAIN_LEN+1 , DirNameFileIni );
 GetPrivateProfileString ( "FTP" , "LOGIN_FTP" , "" , LoginFtp , MAIN_LEN+1 , DirNameFileIni );
 GetPrivateProfileString ( "FTP" , "PWD_FTP" , "" , PwdFtp , MAIN_LEN+1 , DirNameFileIni );
 GetPrivateProfileString ( "FTP" , "DIR_FTP" , "" , DirFtp , MAIN_LEN+1 , DirNameFileIni );
	
 /* Ouverture de la connexion */
 hInternetSession = InternetOpen ( NameApp , INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
 if ( hInternetSession == NULL )
 {
  /* Erreur dans l'ouverture de la connexion */
  WriteInLogFile ( "Erreur dans l'ouverture de la connexion <InternetOpen>" );
  exit;
 }
	
 /* Connexion au serveur FTP */
 hFTPSession = InternetConnect ( hInternetSession, NameServeurFtp, INTERNET_DEFAULT_FTP_PORT, LoginFtp, PwdFtp, INTERNET_SERVICE_FTP, 0, 0);
 if ( !hFTPSession )
 {
  WriteInLogFile ( "Erreur dans l'ouverture de la connexion ftp <InternetConnect>" );
  exit;
 }
 else
 {
  /* Enregistrement des fichiers sur le serveur FTP */
  /* Liste le contenu du répertoire et envoi fichier par fichier */
  strcat ( DirFileTmp, DirFile );
  strcat ( DirFileTmp, "\\*.*" );
  hfind = FindFirstFile ( DirFileTmp, &wfd );
  if (hfind != INVALID_HANDLE_VALUE)
  {
   do
   {
    if( wfd.cFileName[0] != '.')
    {
     /* Envoi du fichier courant */
     strcpy ( FileToSend, DirFile);
     strcat ( FileToSend, "\\");
     strcat ( FileToSend, wfd.cFileName);
     ResultFtp = FtpPutFile ( hFTPSession, FileToSend, wfd.cFileName, FTP_TRANSFER_TYPE_ASCII, NULL);
     if ( !ResultFtp )
     {
      strcpy ( TxtLog, "Erreur Enregistrement du fichier ! <FtpPutFile>");
      strcat ( TxtLog, FileToSend);
      WriteInLogFile ( TxtLog );
     }
    }
   }while(FindNextFile( hfind, &wfd));
   FindClose(hfind);
  }
	
 /* Fermeture de la connexion ftp */
 InternetCloseHandle ( hFTPSession );
 }
 /* Fermeture de la session */
 InternetCloseHandle ( hInternetSession );
	
 if ( strlen ( TxtLog) == 0)
 {
  MessageBox( hDlgSend ,"Opération terminée avec succès !!!!","Information",MB_OK|MB_ICONINFORMATION);
 }
  else
 {
  MessageBox( hDlgSend ,"Erreur dans l'envoi des fichiers consultez le fichier de trace !!!!","Erreur",MB_OK|MB_ICONWARNING);
 }
	
 return;

}
 

 Conclusion

Fonctionnement

1. Parametrage du serveur FTP (les params sont enregistres dans un fichier ini)
2. Sélection du répertoire
3. Envoi des fichiers

Trinita,
Nota il faut la librairie wininet.lib    

 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 avec Zip EXPORTSQL VIA ODBC : EXEMPLE D'UTILISATION
Source avec une capture GETFILEFTP : PERMET DE RÉCUPÉRER UN FICHIER SUR UN SERVEUR F...
Source avec Zip Source avec une capture IMPORSQL -> IMPORTATION DE FICHIER AVEC UN LIEN ODBC
STRTOK : EXEMPLE D'UTILISATION
Source avec Zip DIVERS OUTILS WINDOWS : ENREGISTRER-SOUS...

 Sources de la même categorie

Source avec Zip Source avec une capture CONTACTS MANAGER par eapaceinfo
Source avec Zip Source avec une capture CONTACTES BOOK par mature
Source avec Zip Source avec une capture [C++/QT] SLIDEALWAYS, RÉALISEZ DES SLIDES POUR VOTRE SITE AV... par doderic
Source avec Zip Source avec une capture MAILLAGE 3D (VTK + QT) par ammoun007
Source avec Zip Source avec une capture CONVHTML : UN UTILITAIRE DE CONVERSION POUR FICHIERS HTML par pgl10

Commentaires et avis

Commentaire de pharaonix le 08/06/2003 16:11:00

euh, jai pris ta source car elle me semblait parfaite, et je men suis servi pour developper mon client ftp(pour la fonction connection) jusqua ce que je remarque que ma fonction ne marchait pas. apres deux heures, jai verifié ton prog, et il ne marche pas. pourtant pas derreurs, mais il nenvoie rien,e t ce chez pres de 8 personnes maintenant.
par exemeple, tu le test sur un ordi non connecté au net ou quoi que ce soit, tu tape freeftpperso avec login et pass, et tenvoi et hop, il te marque transfert reussi. il est fort!!! poru reussir sans internet.
pourtant ton code et correct, saurais-tu ce quil se passe?????

merci phara

Commentaire de pharaonix le 09/06/2003 13:26:21

en fait, je n'arrivais pas a le compiler car tu ne met pas wininet.lib et tu ne la lik pas, donc deja ca pouvais pas etre compiler.
par contre, cest bon ton prog marche.
merci pour ta source qui nous a grandement aidé

Commentaire de Trinita16 le 09/06/2003 21:43:23

Bein oui il fonctionne ! et pour la librairie wininet.lib il fallait lire le nota !
Car avec mon ide je ne link pas les librairies dans le source :)

Commentaire de sjasmin le 07/01/2004 00:48:02

j'ai essayé ton code et j'ai mis la librairie wininet.lib

par contre j'ai eu deux erreurs:
c:\program files\microsoft visual studio\vc98\include\wininet.h(48) : error C2146: syntax error : missing ';' before identifier 'HINTERNET'
c:\program files\microsoft visual studio\vc98\include\wininet.h(48) : fatal error C1004: unexpected end of file found

si tu sais ce que pourrais etre la raison merci bien

Commentaire de pharaonix le 07/01/2004 21:13:56

sjasmin. tu n'aurais pas visual 2003? Car le deuxieme probleme je l'ai vu chez de nombreuses personnes. c'est une des propriété du projet(precompilation des headers) qu'il te faut changer.
pour le ;. bah je suppose, qu'il en manque un :) essai de le mettre

Commentaire de vecchio56 le 14/01/2004 20:15:06 administrateur CS

sjasmin&gt; inclus &lt;windows.h&gt; avant &lt;wininet.h&gt;

Commentaire de albert0 le 08/05/2004 00:05:31

Salut all


d'abaord bravo et merci pour le source :)


mais voila j'ai une toute petit question:

Comment faut-il modifier le code pour ne pas etre obliger de selection un folder mais DIRECTEMENT LE fichier a uploader?


merci bcp

Commentaire de jereboss188 le 23/06/2005 15:51:56

Bonjour :)

Avant tout :) merci pour cette source car elle m'a aidé à comprendre pas mal de truc sur les connections, les handles etc etc :). Néanmoins, j'ai tout de même un problème :/ quand je veux transférer un fichier dans un dossier précis, il me met le fichier à la racine :/ est-ce normal? Comment pourrais-je remédier à ce probleme?

Commentaire de nicklink le 16/08/2005 15:01:36

Bonjour bonjour :)
Tout d'abord bravo pr la source,elle est bien commenté et permet donc une comprehension bien assister :D mais voila lorsque je compile g la meme erreur que Sjasmin cad :
c:\program files\microsoft visual studio\vc98\include\wininet.h(48) : error C2146: syntax error : missing ';' before identifier 'HINTERNET'
c:\program files\microsoft visual studio\vc98\include\wininet.h(48) : fatal error C1004: unexpected end of file found

Ensuite g fai comme ce qu'avait proposé Vecchio56 (cad placer le windows.h avant le wininet.h ,ca me vire ces 2 erreurs en compilant,0 erreurs et 0 warning sauf que lorsque je build le proj yen a 7 qu.Merciiiiii :D

Commentaire de Trinita16 le 22/08/2005 15:45:25

Pour jereboss188 :
En effet le fichier est mis à la racine du répertoire ftp. Je n'ai jamais pris le temps de chercher comment faire désolé :(

Pour nicklink :
Je n'utilise pas visual studio mais je pense qu'il te manque un lien vers la librairie dans ton projet.
Nota il faut la librairie wininet.lib

Commentaire de kgadhi le 01/12/2005 15:54:38

Bonjour Trinita16,

Tout d'abord merci pour la source. J'en ai vraiment besoin,
Mais voila, j'aimerais savoir comment je devrais faire pour modifier cette source pour que l'envoi soit automatique?

Merci pour votre aide.

Commentaire de jereboss188 le 01/12/2005 17:40:43

ne sois pas désolé pour ca ^^ y'a aucun probleme ca me donne un petit défi ;) merci encore et bonne continuation

Commentaire de Trinita16 le 06/12/2005 11:55:59

Pour KGADHI :
J'ai tout simplement créé un pti batch et une tâche planifiée.
Une autre solution consisterait à créer un service mais la ....

Commentaire de kgadhi le 06/12/2005 14:59:43

Bonjour Trinita 16 pour ta réponse,

Est ce que tu peux stp me donner plus de détail sur ce que tu as fait en utilisant le batch et la tache planifiée
ou bien si tu peux me donner le code source ça sera meilleur.

Merci d'avance.

Commentaire de Trinita16 le 26/12/2005 15:14:36

Oups, autant pour moi. J'y étais plus, il suffit de créer une tâche planifié sur le programme compilé c'est tout.

Commentaire de milie60 le 26/04/2007 12:09:55

Bonjour Trinita 16
Tout d'abord merci pour la source. Elle est trés intéressante,
Mais voila, j'aimerais savoir comment je devrais faire pour modifier cette source pour que je puisse Downloader des fichiers.
Merci d'avance.

Commentaire de djappaz le 28/12/2007 02:13:55

je sais que c'est bete comme question... mais comment je fais pour compiler tout ca avec dev c++ ???? :(

Commentaire de famousbish le 18/10/2010 21:37:52

Bonjour j'aimerais savoir si quelqu'un pouvait m'aider car je voudrais savoir quelle est le code source pour envoyer un fichier automatiquement sur un ftp distant je n'y connais pas gd chose apar les bases , Merci de votre aide, j'en ai grandement besoin

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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,702 sec (4)

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