|
Trouver une ressource
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 !
ENVOI DE FICHIER PAR FTP (SENDFILEFTP)
Information sur la source
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
Sources du même auteur
Sources de la même categorie
Commentaires et avis
|
Comparez les prix Nouvelle version

HTC Touch HD
Entre 25€ et 605€
|