HTTP PUT传输数据
函数原型CURLcode curl_easy_setopt(CURL *handle, CURLOPT_PUT, long put);
参数3设置为1告诉库使用HTTP PUT传输数据。应该使用CURLOPT_READDATA和CURLOPT_INFILESIZE设置数据。
但是这是7.12.1版本前所使用的方式,在7.12.1版本后就使用CURLOPT_UPLOAD设置数据,但是如果将 libcurl 用作 win32 DLL,则必须使用CURLOPT_READFUNCTION如果设置此选项,否则将遇到崩溃。(查了很多资料都只看到说使用CURLOPT_UPLOAD设置数据,然后就一直在这个点出问题,最后看到官方文档才恍然大悟)。
更多详情可以查看官网 libcurl
下面给出使用例子:
#include <curl/curl.h>
#define PUTURL "xxxxxx"
size_t read_content_callback(void *ptr, size_t size, size_t nmemb, void *stream)
{
//XXX
}
int main()
{
CURL *curl; //定义CURL类型的指针
//初始化一个CURL类型的指针
curl = curl_easy_init();
//设置访问URL
curl_easy_setopt(curl, CURLOPT_URL, PUTURL);
//声明当前采用PUT方式
curl_easy_setopt(curl, CURLOPT_PUT, 1);
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_content_callback);
//iFileSize是你要传输的文件的大小
curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, iFileSize);
//执行本次HTTP/HTTPS请求
res = curl_easy_perform(curl);
//释放资源
curl_easy_cleanup(curl);
}