IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Téléchargement ftp par partie


Sujet :

C++

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut Téléchargement ftp par partie
    Sur un site , j'ai récupéré un téléchargeur FTP qui fonctionne, mais le problème est qu'il télécharge un fichier, et c'est tout.

    Moi, ce que je voudrais c'est qu'il le fasse pour des données que je lui donne (par exemple des bits 11335 à 16416163).

    Est-ce possible en FTP ? (Ca l'est en HTTP)

    voici le code que j'ai pour le moment :

    Déclaration des fonctions :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    boolean ConnexionFTP( char *Serveur, char *Login, char *MotDePasse, DWORD Port )
    {
    	PConnexionInternet = InternetOpenA(/*L"J-FTP"*/"vfp", INTERNET_OPEN_TYPE_DIRECT,/* NULL, NULL*/0,0, 0 );
    	if ( PConnexionInternet == NULL )
    	{
    		return FALSE;
    		ExitProcess(1);
    	}
     
    	//string s="";
    	size_t origsize = 10;//strlen(wcstombs(file).c_str()) + 1;
    	size_t convertedChars = 0;
    	wchar_t wcstring[100];
    	mbstowcs_s(&convertedChars, wcstring, origsize, Serveur/*wcstombs(file).c_str()*/, _TRUNCATE);
    	wcscat_s(wcstring, L"");// (wchar_t *)");
    	//wstring caption=loadstring(IDS_EXCEPTION);
     
    	LPCSTR a=Serveur;
    	LPCSTR b=Login;
    	LPCSTR c=MotDePasse;
     
    	PConnexionFTP = InternetConnectA( PConnexionInternet, (LPCSTR)Serveur, (INTERNET_PORT)Port, (LPCSTR)Login, (LPCSTR)MotDePasse, INTERNET_SERVICE_FTP, 0, 0 );
     
    	if ( PConnexionFTP == NULL )
    	{
    			InternetCloseHandle( PConnexionInternet );
    			return FALSE;
    			ExitProcess(1);
    	}
     
    	return TRUE;
     
    }
     
    boolean changeRepertoire(char* newrep)
    {
    	return FtpSetCurrentDirectoryA(PConnexionFTP,newrep);
    }
     
    /* Detruit les pointeurs de connection */
    void Deconnexion()
    {
    	InternetCloseHandle( PConnexionInternet );
     
        InternetCloseHandle( PConnexionFTP );
    }
     
    /* DownLoad Fichier */
    boolean DownLoadFile( char *FichierSurFTP, char *FichierACreer )
    {
        return FtpGetFileA( PConnexionFTP, (LPCSTR)FichierSurFTP, (LPCSTR)FichierACreer, FALSE, 0, FTP_TRANSFER_TYPE_BINARY, 0 );
    }
     
    boolean DownLoadFileText( char *FichierSurFTP, char *FichierACreer )
    {
        return FtpGetFileA( PConnexionFTP, (LPCSTR)FichierSurFTP, (LPCSTR)FichierACreer, FALSE, 0, FTP_TRANSFER_TYPE_BINARY, 0 );
    }
     
    /* Upload Fichier */
    void UpLoadFile( char *FichierLocal, char *FichierFTP )
    {
        FtpPutFileA( PConnexionFTP, (LPCSTR)FichierLocal, (LPCSTR)FichierFTP, FTP_TRANSFER_TYPE_BINARY, 0 );
    }
    Utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    res=acceder(0,hwnd,ftp[i].adresse);
    addr=res[0];
    login=res[1];
    ficsource=res[2];
    ficdest=res[2];
    affiche(hwnd,"ftp");
    if (ConnexionFTP((char*)addr.c_str(), (char*)login.c_str(),(char*)mdp.c_str(), 21 )==TRUE)
    {
    	affiche(hwnd,"Connection...");
    	res=acceder(1,hwnd,ftp[i].adresse); //récupération des données
    	if ( Action )  // download
    	{
    	   affiche(hwnd,"Telecharge");
    	   if(!DownLoadFile( (char*)ficsource.c_str(), (char*)ficdest.c_str() ))
    	   affiche(hwnd,ficsource);
    	}
    	else //Upload
    	{
    	affiche(hwnd,"envoi");
    	UpLoadFile( (char*)ficsource.c_str(), (char*)ficdest.c_str() );
    	}
    	Deconnexion();
    	affiche(hwnd,"Deconnection");
    	}
    	else
    	{
    	affiche(hwnd,"Deconnection");
    	Deconnexion();	
    	ExitProcess(1);
    	}
    }

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut
    Personne n'a une idée ?

  3. #3
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Bien sur que si !

    FTP est un protocole standardisé, mais il existe en plusieurs versions.
    La fonction que tu recherche est le "resume" d'un download | upload.
    Donc déjà il faut que ton serveur FTP support le jeu de commandes permettant un "resume".

    Pour savoir comment ça se passe, inspire toi de ça :

    http://www.iprelax.fr/ftp/ftp_session.php

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut
    Merci.
    Mais en fait, j'ai trouvé un logiciel qui gère les resume, et comme FTP ne gère pas le fait de télécharger d'un bit X à un bit Y, il suffit de lui dire de s'arrêter après un certain nombre de bits téléchargé (exit(0), ou un goto fin).

    Enfin bon, je vais testé ca, mais si tu as une meilleure idée...

  5. #5
    Membre émérite Avatar de mchk0123
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    816
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2007
    Messages : 816
    Par défaut
    Déjà lire l'article dont j'ai mis le lien et tu verras qu'il existe une commande FTP pour redémarrer un téléchargement à partir de la position X (en octets).

    C'est vraiment pas la peine que Ducros se décarcasse ...

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Janvier 2007
    Messages
    387
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2007
    Messages : 387
    Par défaut
    Citation Envoyé par mchk0123
    Déjà lire l'article dont j'ai mis le lien et tu verras qu'il existe une commande FTP pour redémarrer un téléchargement à partir de la position X (en octets).

    C'est vraiment pas la peine que Ducros se décarcasse ...

    En effet.
    Depuis, en plus, j'ai trouvé un code qui le fait tout seul, donc....

    Merci beaucoup pour ton aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 135
    Dernier message: 15/12/2006, 13h56
  2. Envoyer un fichier sur un serveur FTP par proxy
    Par Tierisa dans le forum Access
    Réponses: 4
    Dernier message: 13/12/2005, 16h39
  3. Difference entre ftp par ssl et ssh
    Par franck06 dans le forum Développement
    Réponses: 3
    Dernier message: 06/12/2004, 20h29
  4. [Windows 2000 server] Téléchargement FTP impossible sous IE6
    Par o151181 dans le forum Windows Serveur
    Réponses: 6
    Dernier message: 24/11/2004, 18h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo