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;
}本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥60 优博讯DT50高通安卓11系统刷完机自动进去fastboot模式
- ¥15 minist数字识别
- ¥15 在安装gym库的pygame时遇到问题,不知道如何解决
- ¥20 uniapp中的webview 使用的是本地的vue页面,在模拟器上显示无法打开
- ¥15 网上下载的3DMAX模型,不显示贴图怎么办
- ¥15 关于#stm32#的问题:寻找一块开发版,作为智能化割草机的控制模块和树莓派主板相连,要求:最低可控制 3 个电机(两个驱动电机,1 个割草电机),其次可以与树莓派主板相连电机照片如下:
- ¥15 Mac(标签-IDE|关键词-File) idea
- ¥15 潜在扩散模型的Unet特征提取
- ¥15 iscsi服务无法访问,如何解决?
- ¥15 感应式传感器制作的感应式讯响器