Bonjour,
J'ai un programme qui utiliser les fonctions Wininet avec en particulier InternetReadFile qui telecharge en memoire vive de gros fichier (plusieurs megas) a partir d'une adresse HTTP. Le probleme est que je ne connais pas a l'avance la taille exacte du programme a telecharger. Bien sur je peux reserver de l'espace tres grand, pour etre sur d'avoir assez de memoire. Mais c'est bete de reserver des dizaine de megas si au final le programme ne fait qu'un mega. De meme si je ne reserve pas assez, il va y avoir des problemes...
Alors bien sur je connais la fonction InternetQueryDataAvailable, mais le probleme est que pour les gros fichier cette fonction ne renvoit pas la taille totale du fichier, mais plutot le nombre d'octets disponible pour le prochain appel a InternetReadFile. Il faut alors boucler et rappeler a nouveau InternetQueryDataAvailable plusieurs fois de suites. Donc contrairement a ce que je peux lire dans pas mal de posts, cette fonction ne permet pas de connaitre de maniere generale la taille d'un fichier avant de l'avoir telecharge.
Y a-t-il une autre facon de faire? J'ai vu que FTPgetFileSize peut le faire, mais le probleme c'est que je ne veut pas faire de FTP, car le programme est destine au public, donc hors de question de communiquer les identifants et mots de passe FTP.
Partager