用libcurl库POST上传图片 用表单方式

int curl_post_jpg(char *file_path)
{
    int ret;
    char ip[32];
    int port;
    char url[256] = {0};
    sprintf(url,"http://test.server.net/post.php?name=test");
    printf("url :%s\n", url);
    ret = get_jpg_data(file_path);
    jpg_data *pic = p_jpg_data;
    if (NULL == pic || NULL == pic->data)
    {
        printf("post data is null\n");
        return -1;
    }

    const char *data = pic->data;
    int len = pic->size;

    CURL *curl = curl_easy_init();
    curl_mime *mime;
    curl_mimepart *part;
    
    curl_easy_setopt(curl, CURLOPT_VERBOSE, 1L);                //开启/关闭 打印调试详细信息模式
    curl_easy_setopt(curl, CURLOPT_URL, url);                    //提供要在请求中使用的URL
    curl_easy_setopt(curl, CURLOPT_TIMEOUT,10L);                //设置上传超市时间10s
    /* Build an HTTP form with a single field named "data", */
    mime = curl_mime_init(curl);
    part = curl_mime_addpart(mime);   
    curl_mime_data(part, data, len);
    curl_mime_name(part, "xxx");
    curl_mime_filename(part, "xxx.jpg");
    curl_mime_type(part, "application/octet-stream"); 

    /* Post and send it. */
    curl_easy_setopt(curl, CURLOPT_MIMEPOST, mime);

    printf("start save result:\n");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, NULL);            //传递给write回调的自定义指针
    printf("end save result !\n");

    CURLcode code = curl_easy_perform(curl);
    if (code == CURLE_OK)
    {
        printf("perform successful\n");
        ret = 0;
    }else{
        printf("perform failed\n");
        ret = -1;
    }
    /* Clean-up. */
    curl_easy_cleanup(curl);
    curl_mime_free(mime);

    if(p_jpg_data)
    {
        free(p_jpg_data);
        p_jpg_data = NULL;
    }
    
    return ret;
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值