博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
libcurl上传文件,添加自定义头
阅读量:6690 次
发布时间:2019-06-25

本文共 1762 字,大约阅读时间需要 5 分钟。

libcurl参数很多,一不小心就容易遇到问题。曾经就遇到过一个很蛋疼的问题:libcurl断点下载>>

这里主要汇总一下,libcurl上传的二种方式:

1、直接上传文件,类似form表单<input type=”file” />,<form enctype=”multipart/form-data”…;

2、上传二进制流;

至于设定自定义头,都是使用一样的方法

struct curl_slist *headers=NULL;headers = curl_slist_append(headers, "Content-Type: text/xml");headers = curl_slist_append(headers, "Accept: text/html, */*;q=0.01");//...//set headerscurl_easy_setopt(easyhandle, CURLOPT_HTTPHEADER, headers);//last free the header list curl_slist_free_all(headers); /* free the header list */

直接上传文件:

struct curl_httppost *formpost = NULL;struct curl_httppost *lastptr = NULL; curl_formadd(&formpost, &lastptr,    CURLFORM_COPYNAME, "uploadfile",    CURLFORM_FILE, "/",//imagepath    CURLFORM_CONTENTTYPE, "Image/jpeg", CURLFORM_END); curl_formadd(&formpost, &lastptr, CURLFORM_COPYNAME, "filename", CURLFORM_COPYCONTENTS, "test.jpg", CURLFORM_END); curl_easy_setopt(m_curl,CURLOPT_HTTPPOST,formpost); //last free post curl_formfree(formpost);

如果上传其它文件类型,那就在curl_formadd中附加CURLFORM_CONTENTTYPE参数(  )

二进制流上传:

//referer http://curl.haxx.se/mail/lib-2003-08/0190.htmlcurl_formadd(&post, &last,              CURLFORM_COPYNAME, "file",              CURLFORM_BUFFER, "unnamed.png",              CURLFORM_BUFFERPTR, memblock,                  CURLFORM_BUFFERLENGTH, memblock_length,              CURLFORM_CONTENTTYPE, "image/png",             CURLFORM_END);  ‘file' is the name of this part, 'unnamed.png' is the name set in the file name field.

上面的参数均不可缺省,如果缺省结果可能不太符合预期。其中Content-Type默认为“application/octet-stream”

CURLFORM_COPYNAME为上传的字段名,如上图所示(name之后)

CURLFORM_BUFFER  在没有使用CURLFORM_FILE上传自定义文件时使用,它用来告诉libcurl文件内容已经在缓存中了,在内容的头信息中它提供了filename字段。我之前没加这个参数发现一直上传不成功- -

*** 还有一个地方要注意的是:CURLFORM_BUFFERLENGTH它的类型必须为long

为了方便测试,我使用了node.js的  来调试

参考链接:

转载地址:http://zxuoo.baihongyu.com/

你可能感兴趣的文章
XenMobile学习文章总结
查看>>
Android开发者的混淆使用手册
查看>>
Telnet服务及协议
查看>>
SpringMVC深度探险
查看>>
关于vs2010巨慢(cpu占用高)的几种解决方式
查看>>
简单3步,轻松集成Testlink和MantisBT
查看>>
PHP+Mysql+Sphinx高效的站内搜索引擎搭建详释
查看>>
Nginx 教程- 获取真实IP模块 - http_realip_module
查看>>
SQL语句教程(04) AND OR
查看>>
Python 中有关中文编码解码小记
查看>>
EBS 12.1.3 db 11.2.3 dg AND DG SWITCH OVER
查看>>
Oracle中的JOIN
查看>>
html中iframe控制父页面刷新
查看>>
每天一个linux命令(50):crontab命令
查看>>
linux命令7--cat命令&nl命令
查看>>
.NET底层开发技术
查看>>
RHEL regiester
查看>>
c/c++中的一些基础知识
查看>>
练习:输出整数每一位,计算算数,9出现次数,输出图案,水仙花数
查看>>
操作系统的发展
查看>>