Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[C/WIN32] TÉLÉCHARGEMENT DE FICHIER AVEC API SEULEMENT.


Information sur la source

Catégorie :Réseaux & Internet Classé sous : download, téléchargement, wininet Niveau : Débutant Date de création : 18/04/2007 Date de mise à jour : 12/01/2008 09:37:02 Vu / téléchargé: 4 460 / 393

Note :
Aucune note

Commentaire sur cette source (7)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
Yop à tous,

J'ai bien vu qu'il y a beaucoup de sources sur cppfrance permettant de télécharger des fichier via le net (http). Mais aucun avec les API wininet donc voila.

Vos remarques sont les bien venues si elles sont contructives.
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

19 avril 2007 19:04:59 :
- Suppression du zero de fin de chaine.
12 janvier 2008 09:37:02 :
- L'allocation de la taille du fichier a été retirée , maintenant le fichier est downloadé MO par MO.

Commentaires et avis

signaler à un administrateur
Commentaire de SAKingdom le 18/04/2007 21:08:06

Dans la fonction DownloadFile, à quoi te sert de mettre le 0 de fin de chaine à szBuff si elle est stocké directement dans un fichier ?

Aussi, dwSizeOfByReq pourrait être une macro plutôt qu'une variable vue qu'il n'est pas modifié.

Tu ne test pas non plus la valeur de retour de HttpQueryInfo. J'ai lus dans le MSDN qu'elle pouvait renvoyer une erreur si, par exemple, il n'y a pas assez de mémoire pour le buffer etc.

signaler à un administrateur
Commentaire de deck_bsd le 19/04/2007 15:53:38

ben j'ai remarqué que si je ne mettait pas le zéro de fin de chaîne j'obtenais des caractères en trop. Et pour httpQueryInfo j'avai fait un test de valeur, la fonction renvoie 1 ou 0 mais elle renvoyai tout le temps 0 hors elle fonctionne très bien (sinon on aurai pas la taille du fichier) et cela forcément faisait planter le programme. Tu vas me dire que c'est bizzar, mais pourtant ... En ce qui concerne dwSizeOfByReq, c'est vrai, je vai le faire.

signaler à un administrateur
Commentaire de SAKingdom le 19/04/2007 17:39:24

Tu obtenais des caractère en trop ? Ça ne devrait techniquement pas arriver.
Et puis d'ailleurs, WriteFile n'écrira pas le 0 de fin de chaine car tu lui dis d'écrire dwBytesRequired octet alors que le 0 se situe un octet plus loin. Étant donné que seul WriteFile utilise la chaine et qu'il ne prend même pas en compte de 0 de fin de chaine, on devrait pouvoir sans passer sans problèmes.

signaler à un administrateur
Commentaire de deck_bsd le 19/04/2007 19:02:40

Oui c'est ce que je me suis dit aussi, je vien de re vérifier et en faite ce que je croyai être des caractères en trop sont en faites des caractères non imprimable qui dans le notepad prête à confusion.

signaler à un administrateur
Commentaire de aardman le 19/04/2007 19:27:33

Ce qui est marrant avec SAKingdom, c'est que le truc qui sert a rien et qui fait perdre 1 milliardième de seconde au cpu, il le repère tout de suite, alors que le fait que le prog prenne 60 mo de mémoire et qu'il consomme en permanence 10-20% de cpu pendant le download d'un fichier de 50 mo, ça le choque même pas.

Plus serieusement, le HeapAlloc() de la taille du fichier, je pense que ca fait un peu lourd. Et aussi, le bouton download reste disponible lors d'un download, ce qui fait qu'on peut lancer plusieurs fois le même download.

signaler à un administrateur
Commentaire de SAKingdom le 19/04/2007 21:10:45

J'avais pas testé l'exécutable :P

signaler à un administrateur
Commentaire de LeFauve42 le 23/04/2007 11:37:52

Salut,

Je suis peut-etre hors sujet ou je n'ai pas compris l'interet, mais j'ai toujours fait ca avec les api urlmon, et ca a l'air beaucoup plus simple.
Un exemple de prog (vite fait) qui prend en argument une url a telecharger et un nom de fichier pour sauver le contenu:

#include "stdafx.h"
#include <urlmon.h>

int main(int argc, char* argv[])
{
    if(argc<3) return 1;

    LPCSTR url = argv[1];
    LPCSTR file = argv[2];
    HRESULT hR = URLDownloadToFile(NULL,url,file,0,NULL);
    if(!SUCCEEDED(hR)) return 1;
    return 0;
}

Eric

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

AIDEZ MOI : LE DOWNLOAD AVEC la classe CHTMLVIEW [ par header ] il me faudrait un topo sur la classe CHtmlViewje ne sais pas comment faire une pause dans un telechargement...................AIDEZ MOI Téléchargement ActiveX [ par gourouman ] Bonjour,Je voudrais savoir ce k'il fallait faire pour installer un activeX fait à partir de VC++ avec MFC Class Wizard, sur un pc Client par l'intermé Download & Upload [ par youpiyoyo ] est-ce qu'il y aurait un moyen de recupéré le download et l'upload sur une carte résoJe suppose à l'aide de la librairie winpcapen faite avec leur tut Download & Upload [ par youpiyoyo ] il aurait-il un moyen de récup le traffic d'une carte réseau en c++plz answer meyoupi++ téléchargement [ par Coq_47 ] Je n'arrive plus à télécharger les zips. Je pense que cela vient des deux serveurs réinstallé le 17 et 18 Avril car je n'avais jamais eu aucun problèm Wininet et Serveur FTP francais [ par Renfield ] Bonjour,Je suis en train de faire un outil pour le boulot qui joues avec des fichiers sur differents serveurs FTP.j'utilise les API de Wininetl'enumer téléchargement de librairie c++ [ par kaichien ] Bonjour à tous...Je voudrais pouvoir récupérer des librairie C++ mais j'y arrive pas, vfw.h m'interesse tout particulièrement.merci de vos réponses@+² InternetSetStatusCallback et Progression de téléchargement [ par mzhunix ] Bonjour, :)(WinInet)Je voudrais savoir comment récupérer, à partir de la focntion pointée par lpfnInternetCallback dans InternetStatusCallback, le no Comment récupérer toutes les URLs sur internet?? [ par supergrey ] Bonjour, je me sert d'internet download manager pour mes téléchargement, qui est capable de télécharger absolument tous les éléments des pages web (im Erreur wininet [ par alicvb ] Voilà le début de mon code (sous DEV C++ 4.9.9.0) :#include &lt;iostream&gt;#include &lt;stdlib.h&gt;#include &lt;windows.h&gt;#include "shellapi.h"#i


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,312 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.