1

我创建了一个使用 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);
4

1 回答 1

2

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

CURLINFO_CONTENT_TYPE

将指针传递给 char 指针以接收下载对象的内容类型。这是从 Content-Type: 字段读取的值。如果你得到 NULL,这意味着服务器没有发送一个有效的 Content-Type 头或者使用的协议不支持这个。

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

于 2012-08-12T13:26:19.333 回答