Voila un exemple
//---------------------------------------------------------------------------
// Fonction pour télécharger des fichiers sur un FTP
// Cette fonction permet de uploader une liste de fichiers sur un FTP
// une fois uploadé le fichier source en local est supprimé
// Accepte autant de fichiers que necessaire en argument
void fUL_FTP( unsigned short f_Nb_Arg , // Nombre de fichier à télécharger
char f_Arg_Server [ 256 ] , // DNS ou IP du serveur ou récupérer les fichiers
char f_Arg_User [ 256 ] , // Nom d'utilisateur pour le FTP
char f_Arg_Pass [ 256 ] , // Mot de passe
char f_Arg_Source [ 256 ] , // Répertoire ou les fichiers sont stockés en local
char f_Arg_Destination [ 256 ] , // Répertoire ou copier les fichiers sur le FTP
... ) // Listes des fichiers à récuperer
{
// Initialisation des macros pour la gestion du nombre variable de fichier
va_list f_Arg_Fichier ; // Définition du pointeur
va_start ( f_Arg_Fichier , f_Arg_Destination ) ; // Initialisation du pointeur sur le premier des arguments
// Déclaration des variables locales
unsigned short f_i ;
char f_Fichier [ 256 ] , f_Source [ 256 ] , f_Destination [ 256 ] , f_Msg_Log [ 1024 ];
// Les handles
HINTERNET f_hInternetConnexion ; // Handle de la connexion internet
HINTERNET f_hFTPSession ; // Handle de la session FTP
// Ouverture de la connexion internet
f_hInternetConnexion = InternetOpen ( "Seb" , INTERNET_OPEN_TYPE_DIRECT , NULL , NULL , 0 ) ;
// Test si l'operation a reussie et log si l'opération échoue
if ( f_hInternetConnexion == NULL )
{ if ( f_Log_Dl_HTTP == 0 )
{
fError_Msg ( GetLastError (), "fUL_FTP : erreur lors de l'initialisation de la connexion internet\n\n\n" ) ;
}
InternetCloseHandle ( f_hInternetConnexion ) ;
return ;
}
// Ouverture de la session FTP
f_hFTPSession = InternetConnect ( f_hInternetConnexion ,
f_Arg_Server , // Nom du serveur FTP
INTERNET_DEFAULT_FTP_PORT , // Port à utiliser
f_Arg_User , // Nom d'utilisateur
f_Arg_Pass , // Mot de passe
INTERNET_SERVICE_FTP ,
NULL ,
NULL ) ;
// Test si la conenxion au server a rèussie et log si l'opération échoue
if ( ! f_hFTPSession )
{ // Appel de la fonction pour loguer l'erreur ds le fichier log.log
sprintf ( f_Msg_Log , "fUP_FTP : erreur lors de la connexion au server FTP %s\n\n\n" , f_Arg_Server ) ;
fError_Msg ( GetLastError (), f_Msg_Log ) ;
InternetCloseHandle ( f_hFTPSession ) ;
InternetCloseHandle ( f_hInternetConnexion ) ;
return ;
}
// Téléchargement des fichiers
for ( f_i = 1 ; f_i <= f_Nb_Arg ; f_i ++ )
{
strcpy ( f_Source , f_Arg_Source ) ; strcpy ( f_Destination , f_Arg_Destination ) ; strcpy ( f_Fichier , va_arg ( f_Arg_Fichier, char * ) ) ;
strcat ( f_Source , f_Fichier ) ; strcat ( f_Destination , f_Fichier ) ;
// Supression des fichiers avant écriture
// Test si l'operation a reussie et log si l'opération échoue
if ( ! FtpDeleteFile( f_hFTPSession , f_Destination ) )
{
if ( f_Log_Dl_HTTP == 0 )
{
// Appel de la fonction pour loguer l'erreur ds le fichier log.log
sprintf ( f_Msg_Log , "fUP_FTP : Echec de supression du fichier %s de %s vers %s%s" , f_Fichier , f_Source , f_Arg_Server , f_Destination ) ;
fError_Msg ( GetLastError (), f_Msg_Log) ;
InternetCloseHandle ( f_hFTPSession ) ;
InternetCloseHandle ( f_hInternetConnexion ) ;
return ;
}
}
// Ecriture des fichiers sur le FTP
// Test si l'operation a reussie et log si l'opération échoue
if ( ! FtpPutFile( f_hFTPSession , f_Source , f_Destination , FTP_TRANSFER_TYPE_BINARY , NULL ) )
{
if ( f_Log_Dl_HTTP == 0 )
{
sprintf (f_Msg_Log , "fUP_FTP : Echec d'ecriture du fichier %s de %s vers %s" , f_Fichier , f_Source , f_Destination );
fError_Msg ( GetLastError (), f_Msg_Log) ;
}
}
else
{
DeleteFile ( f_Source ) ;
}
}
// Fermeture des connexions
InternetCloseHandle ( f_hFTPSession ) ;
InternetCloseHandle ( f_hInternetConnexion ) ;
} ;
//---------------------------------------------------------------------------
tout le code est present ici : http://www.cppfrance.com/code.aspx?ID=25769
Bon courrage.