lwqq007 2015-10-07 10:20 采纳率: 100%
浏览 4467
已采纳

libcurl Post 方法上传文件求助!

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

  • 写回答

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