2010-08-12 2 views
5

Я расширяюсь от perl до C, и я пытаюсь использовать библиотеку curl, чтобы просто сохранить файл с удаленного URL-адреса, но мне трудно найти хороший пример для работы из.Сохранение файла с использованием libcurl в C

Кроме того, я не уверен, если я должен использовать curl_easy_recv или curl_easy_perform

ответ

6

Я нахожу this resource очень проявитель удобно.

Я скомпилировал исходный код ниже с:

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

В основном, это будет загрузить файл и сохранить его на жестком диске.

Файл 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; 
} 

Кроме того, я считаю ваш вопрос похож на этот:

Download file using libcurl in C/C++

+0

Обновленный код для компиляции под GCC. – karlphillip

+0

Всякий раз, когда я это делаю, я получаю заголовки в верхней части моего файла, которые я сохраняю. Есть ли способ обойти это? 'HTTP/1.1 200 OK Сервер: nginx/1.4.1 Дата: Чт, 01 мая 2014 г. 16:56:21 GMT Content-Type: text/html; charset = utf-8 Контент-длина: 7625 Связь: keep-alive' – srchulo

+0

неважно. Я нашел решение здесь: http://stackoverflow.com/questions/5142869/how-to-remove-http-headers-from-curl-response – srchulo