как скачать картинку в файл с помощью libcurl?

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by eldar85, 23 Apr 2010.

  1. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    не могу понять в как в курле скачивать картинку с сайта какого либо в файл, чтобы можно было к примеру на диск С скачать картинку...
    можете помочь?) очень нужно...
     
  2. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    так
    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);
     
    1 person likes this.
  3. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    ого как быстро ответили)) большое вам спасибо)))
     
  4. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    блин, чет я кажется не то наделал, подскажите пожалуйста где накосячил то??
     
    #4 eldar85, 25 Apr 2010
    Last edited: 25 Apr 2010
  5. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    sFileName - имя файла
     
  6. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    тоесть как будет называться сама картинка после скачиваания?))
     
  7. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    а что значит "wb" ???)
     
  8. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    http://www.cplusplus.com/reference/clibrary/cstdio/fopen/
     
  9. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    спасибо...)
    вот сделал так, по идее должен же скачать файл и поместить возле экзэшника, но ничего нету...

     
  10. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    не "сапсибо" говорить надо, а "я больше не буду задавать глупые вопросы не погуглив их"
     
  11. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    согласен) в консоле пишет
    failed writing received data to disk/application, из за чего может быть косяк то еще????
     
    #11 eldar85, 25 Apr 2010
    Last edited: 25 Apr 2010
  12. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    раз в консоли - значит это ошибка самого курла. варианты какие - либо файл занят, либо файл не создался. проверяй результат fopen.
     
  13. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    может fclose(cap_file.stream); ?
     
  14. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    файл не создается вообще, и прописывал ему директорию на диск С и так пробывал одно название файла чтобы возле exe записывался, но файл так и не появился...

    fclose(cap_file.stream); попробывал, не помогает...
     
  15. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    путь то так прописывал "C:\\img.jpg", юак вырублен, или прога под админскими правами, или папка не на диске C.
     
  16. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    вот еще что выдает
    failed writing body (-1 != 1132)
    failed writing received data to disk/application
     
  17. Ra$cal

    Ra$cal Elder - Старейшина

    Joined:
    16 Aug 2006
    Messages:
    670
    Likes Received:
    185
    Reputations:
    78
    if(out && !out->stream)
    {
    out->stream=fopen(out->filename, "wb");
    if(!out->stream)
    return -1;
    }

    дебаг придумали трусы? отладить не пробовал? приходится заниматься дебагом в уме. видимо срабатывает этот выход. курл же видимо ожидает запись всего блока данных. сталобыть файл не открыт. сталобыть кури проблемы с путями, правами.
     
  18. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
    да так прописывал) папка с ехе на диске Е, а какая разница куда помещать файл? главное же указать правельно куда помещать этот файл и все...
     
  19. Meecript_

    Meecript_ Banned

    Joined:
    29 Oct 2008
    Messages:
    194
    Likes Received:
    62
    Reputations:
    32
    Исходник показывай...
     
  20. eldar85

    eldar85 New Member

    Joined:
    27 Aug 2009
    Messages:
    126
    Likes Received:
    1
    Reputations:
    0
     
    #20 eldar85, 26 Apr 2010
    Last edited: 26 Apr 2010
Loading...