Accueil > Forum > > > > Copier un fichier d'internet sur le disque dur en C
Copier un fichier d'internet sur le disque dur en C
dimanche 18 janvier 2004 à 00:14:57 |
Copier un fichier d'internet sur le disque dur en C

Diabolus
|
Salut à tous, Je cherche à faire une fonction qui me permettrait de copier un fichier se trouvant sur internet pour le copier sur le disque dur en local. Est ce qu'il y a une primitive C qui permet de copier des fichiers (comme unlink pour les supprimer) et comme accéder à internet (un fopen("http://www.....","r"); ne marche pas. Merci
|
|
dimanche 18 janvier 2004 à 12:01:56 |
Re : Copier un fichier d'internet sur le disque dur en C

aardman
|
Salut, Tu peux utiliser les sockets, pour etablir la connexion au serveur http, envoyer une requete et recuperer le fichier. Idem avec le protocol ftp.
Il y a aussi les fonctions wininet, InternetOpen(...), InternetOpenUrl(...) et compagnie. J'ai deja posté un exemple de telechargement de fichier avec cette technique: http://www.cppfrance.com/forum.v2.aspx?ID=165981
|
|
dimanche 18 janvier 2004 à 12:18:59 |
Re : Copier un fichier d'internet sur le disque dur en C

Anacr0x
|
en utilisant les sockets, ca me parait relativement compliquer...
avec la commande GET, on récupère également l'entete qu'il faut évidement virer avant d'inscrire le fichier (ca, ca doit pas etre trop dur)
mais comment connaitre la taille du fichier ? c plutot embétant lorsqu'on récupère la fichier avec un while() On pourrait dire que si l'on recoit plus de donné, c fini mais bon, j'aime pas trop cette solution...
|
|
dimanche 18 janvier 2004 à 12:32:25 |
Re : Copier un fichier d'internet sur le disque dur en C

aardman
|
Salut, Tu as une connexion a établir, un requete a envoyer, et c'est tout. Comment connaitre la taille, le type et le nom du fichier ? Facile, en regardant dans l'entete de réponse du serveur.
|
|
dimanche 18 janvier 2004 à 12:39:15 |
Re : Copier un fichier d'internet sur le disque dur en C

Anacr0x
|
ah oué ? je ne savais pas que la taille était ds l'entete... Bon ben effectivement, ca simplifie la tache...
|
|
dimanche 18 janvier 2004 à 12:44:24 |
Re : Copier un fichier d'internet sur le disque dur en C

aardman
|
Salut, Exemple de reponse du serveur:
HTTP/1.1 200 OK Date: Fri, 26 Dec 2003 18:02:37 GMT Server: Apache/1.3.27 (Unix) Debian GNU/Linux Last-Modified: Sat, 20 Dec 2003 12:25:18 GMT ETag: "124ee55-6f5-3fe43fae" Accept-Ranges: bytes Content-Length: 1781 Connection: close Content-Type: application/zip
Cette entete est suivie d'une ligne vide (\\r\\n\\r\\n) qui elle meme est suivie du fichier. On y apprend que c'est un fichier zip de 1781 octets, et que la connexion sera fermée par le serveur une fois le fichier transferé.
|
|
dimanche 18 janvier 2004 à 14:30:19 |
Re : Copier un fichier d'internet sur le disque dur en C

Diabolus
|
Salut, Le code que tu m'as donné (avec le lien) marche nickel, mais si je veux simplement copier le fichier, est ce qu'il y a une primitive semblable à celles qui sont dans ton code pour copier (au lieu de lire par exemple)?
Ou est ce que je dois obligatoirement lire le fichier et copier chaque caractère un par un dans un autre fichier ? (Est ce que cette dernière technique marche avec une photo ou un exe ??)
Merci beaucoup déjà pour cette première approche !
|
|
dimanche 18 janvier 2004 à 14:38:52 |
Re : Copier un fichier d'internet sur le disque dur en C

aardman
|
Salut, Le fichier téléchargé se trouve dans le buffer pFile. La taille du buffer est stockée dans dwFileSize. Libre a toi de l'afficher ou de le copier dans un fichier. Evidement que ca marche avec exe, bmp jpeg wav et autres, dans tout les cas ce ne sont que des suites d'octets.
|
|
dimanche 18 janvier 2004 à 16:34:24 |
Re : Copier un fichier d'internet sur le disque dur en C

Diabolus
|
Il me reste un problème pour copier la suite d'octets : En laissant pFile de type chaine de caractères, j'essaie de copier le fichier en faisant : ......... i=0; while(i<dwFileSize){ fputc(pFile[i] , fichier); i++; } .....
Et ça me recopie pas exactement le fichier. Ca me rajoute quelques caractères. (ex une photo de 59ko fait après 59,2ko. La différence apparait assez tôt dans le fichier)
Est que ça peut marcher en conservant cette technique (donc où est mon erreur), ou est ce que l'on peut manipuler un tableau de bits ou octets et pouvoir copier dans le fichier octet par octet (au lieu de passer par des caractères qui font 4 octets chacun) (si l'erreur vient de ça)?
Merci
|
|
dimanche 18 janvier 2004 à 16:43:56 |
Re : Copier un fichier d'internet sur le disque dur en C

aardman
|
Salut, pFile n'est pas une chaine de caractere ! c'est un buffer de dwFileSize octets. Ton fichier se trouve entre l'adresse pFile et l'adresse pFile+dwFileSize.
Je te conseille plutot fwrite qui ecrira tout le buffer dans ton fichier d'un coup. fwrite(pFile, dwFileSize, 1, fichier);
PS: un caractere fait 1 octet, pas 4.
|
|
Cette discussion est classée dans : fichier, internet, dur, disque, copier
Répondre à ce message
Sujets en rapport avec ce message
Comment faire pour rechercher un fichier dans tout le disque dur ? [ par appstmd ]
Salut !J'ai besoin de savoir comment on peut scanner le disque dur à la recherche d'un fichier déterminé. Quelqu'un connait-il une astuce ou un algori
fonction pour rechercher un fichier sur le disque dur [ par crunk ]
Bonjour je suis debutant en c++ et je cherche une fonction qui permette de rechercher un fichier sur le disque dur puis de le supprimer merci d'avanc
Est-il possible de rechercher un fichier sur le disque dur [ par johnatemps ]
l'api GetDiskFreeSpaceEx [ par mniajnaa ]
bonjour quand j'utilise l'api GetDiskFreeSpaceEx( ) avec comme premier paramettre 'NULL' ça marche elle recupere des informations sur le disque
disque dur externe usb non reconnu [ par Loki6 ]
salut tous, alors mon petit problème du soir, j'ai manipulé ce matin un disque dur externe (ne m'appartenant pas). c'est à dire que j'ai exploré les d
la sauvegarde des partitions d'un disque dur [ par pew_orange ]
bjr,je vx kelk1 ki a une idée concernant le programme de sauvegarde des partition d'un disque dur en C. je cherche pas les logiciels, y'en a bcp.merc
Disque dur [ par MadMax1024 ]
Bonjours à tous.Voila aprés le crash de mon disque dur maxtor 160GBqui fonctionnais trés bien, j'ai racheté le même.Mais voila, aprés l'installation d
Copier un jpg en c++ [ par Nagalta ]
Bonjour, je souheterai copier une image jpg dans un autre dossier,pour le moment jai cela :ifstream exoi("F://DSC0056.JPG"); // le fichier en lectureo
pb telechargement cache internet [ par gege1024 ]
pour resumer : j'ai fait un logiciel avec mise a jour automatique par http.c'est a dire que quand je fais une nouvelle version, je met sur un serveur
la taille d'un fichier sur le disque [ par mniajnaa ]
bonsoirje cherche une api " fontion systeme " qui retourne la taille d'un fichier sur le disque le language est le c++;merci d'avance
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|