Resume d'un téléchargement FTP (Wininet)

Bistoy Messages postés 4 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 20 avril 2007 - 3 avril 2006 à 10:29
Bistoy Messages postés 4 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 20 avril 2007 - 20 avril 2007 à 19:13
Je suis en train de me faire un petit client FTP car je n'arrive pas à en trouver un (même commercial) qui ne plante pas.

Tout marche correctement mais je dois avouer que je bloque lorsque j'esssaye de déplacer mon pointeur de fichier distant avec InternetOpenUrl(). (c'est la seule fonctione de wininet qui supporte InternetSetFilePointer() pour les serveur FTP à ma conaissance)
La fonction me renvoie tout le temps la valeur 0 et pourtant mon serveur supporte le resume.

ci-joint le petit bout de code pour le resume (j'utilise plutot la fonction FtpOpenFile() pour télécharger un fichier sans déplacer le pointeur, celle-ci marche parfaitement) :

hInternetSession = InternetOpen(szAppName, ZeConfig.Type_Proxy, ZeConfig.NomProxy, NULL, 0);
...
// Formatage de la chaine
InternetCanonicalizeUrl(TmpBuffer, FileToResume, &FileToResumeBufferLength, ICU_DECODE);
// Ouverture du fichier distant
HwndNetFile = InternetOpenUrl(hInternetSession, FileToResume, NULL, NULL,
INTERNET_FLAG_PASSIVE | INTERNET_FLAG_EXISTING_CONNECT INTERNET_FLAG_RAW_DATA | INTERNET_FLAG_RELOAD, 0);
if(HwndNetFile == NULL)
{
UpdateLog("Impossible d'ouvrir le Fichier distant pour compléter le transfert de '%s'.", FileToResume);
GetLastErreur("InternetOpenUrl");
goto DownloadFini;
};
// TailleTotaleExistante = Taille du fichier toujours > 0)
ResumeResult = InternetSetFilePointer(HwndNetFile, TailleTotaleExistante, NULL, FILE_BEGIN, 0);
if(ResumeResult == -1)
{
UpdateLog("Le pointeur du fichier n'a pas été mis à la position demandée. (%u) [%u]", TailleTotaleExistante, ResumeResult);
goto DownloadFini;
}
if(ResumeResult == 0)

{

UpdateLog("Le pointeur du fichier n'a pas été mis à la position demandée. (%u) [%u]", TailleTotaleExistante, ResumeResult);

goto DownloadFini;

}
UpdateLog("Le pointeur du fichier a été mis à la position %u. [%u]", TailleTotaleExistante, ResumeResult);
...

Je me demandais si il etait possible de déplacer le pointeur de fichier autrement que par la fonction InternetSetFilePointer.
Je sais que ca fonctionne avec InternetReadFile mais c'est pas interessant etant donnée que je ne veux pas télécharger cette partie,
Etant donnée que c'est un handle je vois pas trop comment; es ce que vous auriez une idée?

5 réponses

realic Messages postés 16 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 29 janvier 2016
20 avril 2007 à 15:34
Salut,


En fait je cherche un logiciel qui gère le téléchargement par partie, car celui que j'utilise reçoit le fichier d'une traite (via ftpgetfile).
Ton code a l'air de correspondre à ce que je recherche. Pourrais-tu me l'envoyer, et comme ca, on sera 2 à plancher sur ton problème en plus .


 
0
Bistoy Messages postés 4 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 20 avril 2007
20 avril 2007 à 16:00
En fait en regardant la doc de wininet sur le msdn de microsoft on peut voir que wininet ne supporte pas la fonction resume...

Je te conseille FlashFXP, un client FTP gratuit qui possède cette fonction.
0
realic Messages postés 16 Date d'inscription jeudi 16 novembre 2006 Statut Membre Dernière intervention 29 janvier 2016
20 avril 2007 à 17:37
J'ai trouvé un logiciel qui gère les resume en FTP ;).
Donc c'est possible, il ne le fait pas en naturel, mais il le fait.

http://www.codeproject.com/internet/pauseresume.asp

Le seul problème, pour le moment, pour moi, c'est qu'il ne fonctionne pas en UNICODE. Mais bon ,ca va venir.
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
20 avril 2007 à 18:34
FlashFXP est bien mais pas gratuit

_____________________________________
Un éditeur de ressources gratuit pour Windows
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bistoy Messages postés 4 Date d'inscription jeudi 7 avril 2005 Statut Membre Dernière intervention 20 avril 2007
20 avril 2007 à 19:13
Ah oui désolé, alors tu as ACE FTP et FileZilla et Bullet FTP proof qui sont freeware je crois :)
0
Rejoignez-nous