下载curl文件时确定扩展名?

时间:2012-08-12 13:20:29

标签: c++ curl

我创建了一个程序,使用curl从INTERNET下载字幕 如何知道我下载的文件的扩展名(.zip或.rar)?

这是我的代码(它是函数的一部分)

FILE* download=fopen("download.zip","wb");//i assume it's a zip
curl = curl_easy_init();
curl_easy_setopt(curl, CURLOPT_POST,1);
curl_easy_setopt(curl, CURLOPT_POSTFIELDS,post_data.c_str());
curl_easy_setopt(curl, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
curl_easy_setopt(curl, CURLOPT_URL,url.c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write2file);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, download);
res = curl_easy_perform(curl);
if(res != CURLE_OK)
    std::cout<<"Download Failed "<<std::endl;
curl_easy_cleanup(curl);
fclose(download);

1 个答案:

答案 0 :(得分:2)

您可以使用curl_easy_getinfo()功能,它具有内容类型信息:

  

CURLINFO_CONTENT_TYPE

     

将指针传递给char指针以接收内容类型   下载的对象。这是从Content-Type读取的值:   领域。如果您获得NULL,则表示服务器未发送有效的   Content-Type标头或使用的协议不支持此功能。

使用该信息,您可以通过在磁盘上重命名来为下载的文件提供正确的扩展名。