Getfileftp : permet de récupérer un fichier sur un serveur ftp

Soyez le premier à donner votre avis sur cette source.

Snippet vu 15 256 fois - Téléchargée 1 728 fois

Contenu du snippet

Voici la fonction principale (FTP)
Sinon voir le code

Source / Exemple :


//
// 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

A voir également

Ajouter un commentaire

Commentaires

Messages postés
1
Date d'inscription
lundi 16 novembre 2009
Statut
Membre
Dernière intervention
29 décembre 2009

où je pourrais trouver le zip de cet utilitaire fort simple ??
merci
Messages postés
76
Date d'inscription
lundi 21 mars 2005
Statut
Membre
Dernière intervention
29 novembre 2009

cherche CFileX, il gere http, ftp et fichier local de maniere transparent
Messages postés
8
Date d'inscription
mardi 27 avril 2004
Statut
Membre
Dernière intervention
1 décembre 2009

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
Messages postés
199
Date d'inscription
lundi 22 juillet 2002
Statut
Membre
Dernière intervention
14 juin 2006

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,
Messages postés
32
Date d'inscription
mardi 4 février 2003
Statut
Membre
Dernière intervention
10 juillet 2007

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
Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.