首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用curl将数据从URL复制到文件中,同时访问该文件

使用curl将数据从URL复制到文件中,同时访问该文件
EN

Stack Overflow用户
提问于 2019-09-04 20:41:48
回答 1查看 62关注 0票数 0

我正在使用curl库将数据从URL复制到文件中。我希望在写入文件的同时访问该文件。但是文件并没有被创建。

代码语言:javascript
复制
    CURL *curl;
CURLcode res;
static const char *filename = "stream.txt";
FILE *fileptr;

/* URL of the radio-station  */
char * webaddr =  "http://mp3channels.webradio.antenne.de:80/rockantenne-deutschland.aac";
curl = curl_easy_init();

if (curl)
{

    curl_easy_setopt(curl, CURLOPT_URL, webaddr);
            curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);
    curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1L);
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
    res = curl_easy_perform(curl);
    fileptr  = fopen(filename, "wb");
    if (fileptr)
    {
        curl_easy_setopt(curl, CURLOPT_WRITEDATA, fileptr);
        curl_easy_perform(curl);
        fclose(fileptr);
    }
    if (res != CURLE_OK)
        fprintf(stderr,
                "curl_easy_perform() failed: %s\n",
                curl_easy_strerror(res));
    curl_slist_free_all(headers);
    curl_easy_cleanup(curl);
}
EN

回答 1

Stack Overflow用户

发布于 2019-09-04 20:49:27

当您设置CURLOPT_WRITEFUNCTION时,您将使libcurl将所有接收到的数据传递给给定的回调,而不是默认的函数(即fwrite())。

因此,为了同时“使用”数据并将其存储在文件中,只需让您的回调函数做到这一点!

或者,您可以不设置CURLOPT_WRITEFUNCTION,而只使用CURLOPT_WRITEDATA设置FILE * (但是,如果您在Windows上使用libcurl作为DLL,则此方法不起作用)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57788635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档