Hi,
我在我的虚拟机上编译好了libcurl库,然后参照列程写了个简单的http post上传文件。
在构建form表单的时候,如果把参数设置为CURLFORM_FILE 并输入对应的文件名,可以再服务器(HFS)指定的文件路径下看到我上传的文件。
但我要使用libcurl的平台没有文件系统,所以就打算用CURLFORM_BUFFER参数来设置数据区。结果这个能够上传,可是不能再文件路径下看到这个文件。
HFS的上传权限打开了的。
对比两种方式的wireshark包,发现在Content-Disposition这个请求头后面的filename没指定。
于是用curl_slist_append却手动设定这个值为我想要的任意名称,问题又来了,正常的流程中,filename这个参数
是添加在MIME Multipart Media后面的。但手动添加的curl_list却在Hypertext Transfer Procotol后面。这下查找了好久的资料也没看到怎么处理,网上各位大神弄的都是一个文件上传到另一个文件的方式。
请问谁有经验,麻烦解惑,谢谢!
上传测试源代码和两个wireshark截图 success.bmp(直接传入file方式,可以创建文件的截图)fail.bmp(用缓冲区地址作为数据输入,不可以创建制定的文件) main.c 测试程序
没看到哪儿上传附件,我发个链接,谢谢!http://pan.baidu.com/s/1ntAc6ql
libcurl Post 方法上传文件求助!
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- lwqq007 2015-10-08 01:41关注
哦,是我的curl_formadd没写好,添加CURLFORM_BUFFER来指定文件名就可以了。 if(curl_formadd(&post, &last,
CURLFORM_COPYNAME, "sourcedata",
CURLFORM_BUFFER, "test.bmp" ,
CURLFORM_BUFFERPTR, imageData ,
CURLFORM_BUFFERLENGTH, 102400,
CURLFORM_END) != 0)
{
fprintf(stderr, "curl_formadd2 error.\n");
goto out;
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 如何在scanpy上做差异基因和通路富集?
- ¥20 关于#硬件工程#的问题,请各位专家解答!
- ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
- ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
- ¥30 截图中的mathematics程序转换成matlab
- ¥15 动力学代码报错,维度不匹配
- ¥15 Power query添加列问题
- ¥50 Kubernetes&Fission&Eleasticsearch
- ¥15 報錯:Person is not mapped,如何解決?
- ¥15 c++头文件不能识别CDialog