Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   как скачать картинку в файл с помощью libcurl? (https://forum.antichat.xyz/showthread.php?t=198701)

eldar85 23.04.2010 22:00

как скачать картинку в файл с помощью libcurl?
 
не могу понять в как в курле скачивать картинку с сайта какого либо в файл, чтобы можно было к примеру на диск С скачать картинку...
можете помочь?) очень нужно...

M_script_ 23.04.2010 22:04

так
PHP код:

//---------------------------------------------------------------------------
struct CapFile
{
    const 
char *filename;
    
FILE *stream;
};
//---------------------------------------------------------------------------
static size_t CapWrite(void *buffersize_t sizesize_t nmembvoid *stream)
{
    
struct CapFile *out=(struct CapFile *)stream;
    if(
out && !out->stream)
    {
        
out->stream=fopen(out->filename"wb");
        if(!
out->stream)
            return -
1;
    }
    return 
fwrite(buffersizenmembout->stream);
}
//--------------------------------------------------------------------------- 

и так
PHP код:

struct CapFile     cap_file = {sFileName.c_str(), NULL};

curl_easy_setopt(curlCURLOPT_WRITEFUNCTIONCapWrite);
curl_easy_setopt(curlCURLOPT_WRITEDATA, &cap_file);
curl_easy_setopt(curlCURLOPT_URLsUrl.c_str());
curl_easy_perform(curl); 


eldar85 23.04.2010 22:08

ого как быстро ответили)) большое вам спасибо)))

eldar85 25.04.2010 20:35

блин, чет я кажется не то наделал, подскажите пожалуйста где накосячил то??
Цитата:

#include <curl/curl.h>
#include <QApplication>
#include <stdio.h>
#include <c++/iostream>
#include <c++/string>

struct CapFile
{
const char *filename;
FILE *stream;
};

//---------------------------------------------------------------------------
static size_t CapWrite(void *buffer, size_t size, size_t nmemb, void *stream)
{
struct CapFile *out=(struct CapFile *)stream;
if(out && !out->stream)
{
out->stream=fopen(out->filename, "wb");
if(!out->stream)
return -1;
}
return fwrite(buffer, size, nmemb, out->stream);
}


int main(int argc, char* argv[])
{
CURL* curl;
curl = curl_easy_init();
string sUrl = "http://www.missfit.ru/i/4215472799.jpg";
string sFileName = "c:/zove/";

struct CapFile cap_file = {sFileName.c_str(), NULL};

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CapWrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &cap_file);
curl_easy_setopt(curl, CURLOPT_URL, sUrl.c_str());
curl_easy_perform(curl);
int i;
std::cin >> i;

return 0;
}

M_script_ 25.04.2010 21:22

Цитата:

Сообщение от eldar85
блин, чет я кажется не то наделал, подскажите пожалуйста где накосячил то??

sFileName - имя файла

eldar85 25.04.2010 21:43

тоесть как будет называться сама картинка после скачиваания?))

eldar85 25.04.2010 21:48

а что значит "wb" ???)

Ra$cal 25.04.2010 23:00

http://www.cplusplus.com/reference/clibrary/cstdio/fopen/

eldar85 25.04.2010 23:18

спасибо...)
вот сделал так, по идее должен же скачать файл и поместить возле экзэшника, но ничего нету...

Цитата:

#include <curl/curl.h>
#include <QApplication>
#include <stdio.h>
#include <c++/iostream>
#include <c++/string>

struct CapFile
{
const char *filename;
FILE *stream;
};

//---------------------------------------------------------------------------
static size_t CapWrite(void *buffer, size_t size, size_t nmemb, void *stream)
{
struct CapFile *out=(struct CapFile *)stream;
if(out && !out->stream)
{
out->stream=fopen(out->filename, "wb");
if(!out->stream)
return -1;
}
return fwrite(buffer, size, nmemb, out->stream);
}


int main(int argc, char* argv[])
{
CURL* curl;
curl = curl_easy_init();
string sUrl = "http://www.missfit.ru/i/4215472799.jpg";
string sFileName = "my.jpg";

struct CapFile cap_file = {sFileName.c_str(), NULL};

curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CapWrite);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &cap_file);
curl_easy_setopt(curl, CURLOPT_URL, sUrl.c_str());
curl_easy_perform(curl);
int i;
std::cin >> i;
return 0;


}

Ra$cal 25.04.2010 23:23

не "сапсибо" говорить надо, а "я больше не буду задавать глупые вопросы не погуглив их"


Время: 18:30