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 !

GETFILEFTP : PERMET DE RÉCUPÉRER UN FICHIER SUR UN SERVEUR FTP


Information sur la source

Catégorie :API Niveau : Débutant Date de création : 26/06/2003 Date de mise à jour : 26/06/2003 19:29:08 Vu / téléchargé: 7 824 / 963

Note :
9 / 10 - par 2 personnes
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Voici la fonction principale (FTP)
Sinon voir le code
 

Source

  • //
  • // 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 : 26/06/2003
  • // Date de Modification : 26/06/2003
  • // Version : 1.0.0
  • //
  • #include <string.h>
  • #include <stdio.h>
  • #include <Wininet.h>
  • #include <windows.h>
  • #include "main.h"
  • #include "logfile.h"
  • #include "ressource.h"
  • void SendFileFtp ( HWND hDlgSend, char DirFile[MAIN_LEN+1], char DirRep[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]="";
  • bool ResultFtp;
  • char DirToRecupFile[MAIN_LEN+1]="";
  • // Les handles
  • // handle to internet connection
  • HINTERNET hInternetSession;
  • // handle to FTP session
  • HINTERNET hFTPSession;
  • // Chemin complet du fichier de destination
  • strcpy (DirToRecupFile,DirRep);
  • strcat (DirToRecupFile,"\\");
  • strcat (DirToRecupFile,DirFile);
  • // 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 );
  • // 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
  • {
  • // Réception du fichier FTP
  • ResultFtp = FtpGetFile ( hFTPSession, DirFile, DirToRecupFile, NULL, NULL,FTP_TRANSFER_TYPE_ASCII, NULL);
  • if ( ResultFtp )
  • {
  • MessageBox( hDlgSend ,"Opération terminée avec succès !!!!","Information",MB_OK|MB_ICONINFORMATION);
  • }
  • else
  • {
  • MessageBox( hDlgSend ,"Erreur dans la réception du fichier, consultez le fichier de trace !!!!","Erreur",MB_OK|MB_ICONWARNING);
  • }
  • // Fermeture de la connexion ftp
  • InternetCloseHandle ( hFTPSession );
  • }
  • // Fermeture de la session
  • InternetCloseHandle ( hInternetSession );
  • return;
  • }
//
// 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 : 26/06/2003				
// Date de Modification : 26/06/2003				
// Version : 1.0.0					
//						

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

#include "main.h"
#include "logfile.h"
#include "ressource.h"
	
void SendFileFtp ( HWND hDlgSend, char DirFile[MAIN_LEN+1], char DirRep[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]="";
bool ResultFtp;
char DirToRecupFile[MAIN_LEN+1]="";

// Les handles
// handle to internet connection
HINTERNET hInternetSession; 				
// handle to FTP session
HINTERNET hFTPSession; 						
	
// Chemin complet du fichier de destination
strcpy (DirToRecupFile,DirRep);
strcat (DirToRecupFile,"\\");
strcat (DirToRecupFile,DirFile);
	
// 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 );
	
// 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
{
// Réception du fichier FTP
ResultFtp = FtpGetFile ( hFTPSession, DirFile, DirToRecupFile, NULL, NULL,FTP_TRANSFER_TYPE_ASCII, NULL);
if ( ResultFtp )
{
MessageBox( hDlgSend ,"Opération terminée avec succès !!!!","Information",MB_OK|MB_ICONINFORMATION);
}
else
{
MessageBox( hDlgSend ,"Erreur dans la réception du fichier, consultez le fichier de trace !!!!","Erreur",MB_OK|MB_ICONWARNING);
}

// Fermeture de la connexion ftp
InternetCloseHandle ( hFTPSession );
}
// Fermeture de la session
InternetCloseHandle ( hInternetSession );
	
return;
}

Conclusion

Attention il faut la librairie wininet.lib
 

Fichier Zip

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

Commentaires et avis

signaler à un administrateur
Commentaire de MoDDiB le 27/06/2003 11:17:28

Enfin une source sur ca ^^
et sur le http?? ca matche ossi??

signaler à un administrateur
Commentaire de Trinita16 le 27/06/2003 16:47:34

Tout d'abord merci. Mais je n'ai pas énormement de mérite ! Il suffit dee faire quelques recherches sur le net sur la commande FtpGetFile et voila le tour est joué.
Mais voila je l'ai mis en forme pret à l'emploie.
Autrement pour le HTTP je ne pense pas que ça fonctionne, ce n'est pas le meme port de com... Mais bon à tester....

Bon Dev et Merci @+
Trinita

signaler à un administrateur
Commentaire de schub1015 le 15/01/2004 10:30:35

Bonjour,
tout d'abord la source est très bien.
Mais j'aimerais savoir si le transfert concerne tous les fichiers d'un répertoire ou seulement un seul fichier.
Merci pour ta réponse.
Emmanuel

signaler à un administrateur
Commentaire de Trinita16 le 15/01/2004 10:37:13

Slt,
L'exmple permet de récupérer un seul fichier sur le serveur FTP.

Mais il doit surement être possible d'en récupérer plusieurs...
Regarde dans la doc du MSDN il y a de bon exemple ....

Trinita16,

signaler à un administrateur
Commentaire de camal35 le 02/05/2007 13:00:29

Ton programme a l'air d'être pas mal,par contre je ne vois pas de fichier .dsp ou dsw ni de makefile afin de pouvoir le compiler avec mon visual C++6 .
Merci d'ajouter un fichier .dsp par exemple dans ton fichier ZIP

signaler à un administrateur
Commentaire de darkpoulpo le 12/08/2007 16:57:30

cherche CFileX, il gere http, ftp et fichier local de maniere transparent

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,140 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.