Bonjour j'ai developer une application qui telecharge des fichier sur un serveur ftp et j'aimerai associer a ce telechargement une barre de progression mais je ne sait vraiment pas comment faire.Pourriez-vous m'aider.
Merci d'avance
Version imprimable
Bonjour j'ai developer une application qui telecharge des fichier sur un serveur ftp et j'aimerai associer a ce telechargement une barre de progression mais je ne sait vraiment pas comment faire.Pourriez-vous m'aider.
Merci d'avance
Tu as écrit toi-même le code du FTP, ou tu as utilisé une librairie toute faite ? Si tu as utilisé une librairie, laquelle ?
Bonjour,
Je voudrais ajouter comme questions:
- C'est en console ou en utilisant une bibliothèque pour l'interface ? ( si bibliothèque, laquelle ? )
- C'est pour quel système d'exploitation ?
J'utilise la librairie wininet pour le ftp.
MFC visual studio
Windows vista
Aprés plusiuers recherche rien n'y fait je n'arrive toujours a faire en sorte que ma barre de progression avance en fonction d'un telechargement FTP.
Un peu d'aide SVP
Tu ouvres le fichier à télécharger avec FtpOpenFile puis tu fais une boucle avec InternetReadFile tant que le fichier n'a pas été entièrement téléchargé. A chaque itération, tu fais avancer le progress bar. A la fin du téléchargement, fermer le handle du fichier avec InternetCloseHandle.
Merci
Bonjour j'ai essayer se que m'as dit melem
Mais cela ne marche pas pourriez vous m'aider merciCode:
1
2
3
4
5
6
7 FtpOpenFile(hFTPSession,existFileV2,GENERIC_READ,FTP_TRANSFER_TYPE_BINARY,NULL); while(Return != 1) { Return = InternetReadFile(hFTPSession,Buf,sizeof(existFileSAPEL),0); ProgressBar++; MyBar.SetPos(ProgressBar); }
Juste une modification au niveau du code le probleme reste le meme merci d'avance
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Return1 = FtpOpenFile(hFTPSession, existFileSAPEL, GENERIC_READ, FTP_TRANSFER_TYPE_BINARY ,NULL); buf = new char[(size_t)Return1]; size = FtpGetFileSize(Return1, NULL); for(ProgressBar = 0;ProgressBar<size;ProgressBar++); { Return = InternetReadFile(Return1,buf,size,&reste); ProgressBar++; MyBar.SetPos(ProgressBar); }
Ceci marche :
Améliore la robustesse du programme.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53 #include <windows.h> #include <wininet.h> #include <iostream> #include <cstdio> int main() { HINTERNET hInternet = InternetOpen(TEXT("Melem Downloader 0.0"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0); HINTERNET hServer = InternetConnect( hInternet, TEXT("ftp-developpez.com"), INTERNET_DEFAULT_FTP_PORT, NULL, NULL, INTERNET_SERVICE_FTP, INTERNET_FLAG_PASSIVE, 0 ); HINTERNET hRemoteFile = FtpOpenFile( hServer, TEXT("/melem/tutoriels/langage-c/fichiers/fichiers.zip"), GENERIC_READ, FTP_TRANSFER_TYPE_BINARY, 0 ); HANDLE hLocalFile = CreateFile( TEXT("fichiers.zip"), GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); BYTE lpBuffer[4096]; DWORD dwRemoteRead, dwLocalWritten; BOOL done = FALSE; while (!done) { BOOL success = InternetReadFile(hRemoteFile, lpBuffer, sizeof(lpBuffer), &dwRemoteRead); done = !success || dwRemoteRead == 0; if (!done) { WriteFile(hLocalFile, lpBuffer, dwRemoteRead, &dwLocalWritten, NULL); dwTotalWritten += dwLocalWritten; std::printf("\r%.0f effectue.", (100.0 * dwTotalWritten)/dwFileSize); std::cout << std::flush; } } std::cout << std::endl; CloseHandle(hLocalFile); InternetCloseHandle(hRemoteFile); InternetCloseHandle(hServer); InternetCloseHandle(hInternet); return 0; }