2010-08-12 13 views
5

Je passe de perl à C et j'essaie d'utiliser la bibliothèque de curl pour simplement enregistrer un fichier depuis une URL distante, mais j'ai du mal à trouver un bon exemple pour travailler de.Enregistrement d'un fichier en utilisant libcurl dans C

Aussi, je ne sais pas si je devrais utiliser curl_easy_recv ou curl_easy_perform

Répondre

6

Je trouve sympathique this resource développeur très.

Je compilé le code source ci-dessous avec:

gcc demo.c -o demo -I/usr/local/include -L/usr/local/lib -lcurl 

Fondamentalement, il va télécharger un fichier et l'enregistrer sur votre disque dur.

Fichier demo.c

#include <curl/curl.h> 
#include <stdio.h> 

void get_page(const char* url, const char* file_name) 
{ 
    CURL* easyhandle = curl_easy_init(); 

    curl_easy_setopt(easyhandle, CURLOPT_URL, url) ; 

    FILE* file = fopen(file_name, "w"); 

    curl_easy_setopt(easyhandle, CURLOPT_WRITEDATA, file) ; 

    curl_easy_perform(easyhandle); 

    curl_easy_cleanup(easyhandle); 

    fclose(file); 

} 

int main() 
{ 
    get_page("http://blog.stackoverflow.com/wp-content/themes/zimpleza/style.css", "style.css") ; 

    return 0; 
} 

Aussi, je crois que votre question est semblable à celui-ci:

Download file using libcurl in C/C++

+0

code mis à jour pour compiler sous gcc. – karlphillip

+0

Chaque fois que je fais cela, je reçois les en-têtes en haut de mon fichier que je sauvegarde. Y a-t-il un moyen de contourner ceci? 'HTTP/1.1 200 OK Serveur: nginx/1.4.1 Date: jeu, 01 mai 2014 16:56:21 GMT Type de contenu: text/html; charset = utf-8 Longueur du contenu: 7625 Connexion: keep-alive' – srchulo

+0

peu importe. J'ai trouvé la solution ici: http://stackoverflow.com/questions/5142869/how-to-remove-http-headers-from-curl-response – srchulo