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);
}

 

posted @ 2022-06-28 16:23  梅花五瓣  阅读(419)  评论(0编辑  收藏  举报