是否可以在 libcurl 中将多部分 post 字段作为数组发送?

Is possible to send multipart post fields as array in libcurl?

我可以使用 CURLOPT_POSTFIELDS 设置 post 正文 'a[]=1&a[]=2&a[]=3'。

当我尝试使用 curl_formadd 填充多部分参数时,它总是 return CURL_FORMADD_OPTION_TWICE,我看到有一个选项 CURLFORM_ARRAY,但似乎它是用于选项,而不是对于多值字段。

有没有办法使用 curl API 来做到这一点?

curl_formadd 是使用 libcurl 执行多部分表单 post 的(有用的)方法。您 可以 也可以创建自己的缓冲区并将其作为正常发送 post,但这需要您自己格式化所有内容,我不建议这样做。

如果您在使用 curl_formadd 时遇到问题,最好进行尽可能小的测试并寻求帮助。在 curl 网站上有 curl_formadd 个使用示例。

感谢 Daniel Stenberg 纠正我的错误。

使用curl_formadd

post数组很容易
struct curl_httppost *formpost = NULL;
struct curl_httppost *lastptr = NULL;
char* buffer = "part body";
int len = strlen(buffer);
curl_formadd(&formpost,
           &lastptr,
           CURLFORM_COPYNAME, "name[]",
           CURLFORM_BUFFER, "buffer",
           CURLFORM_BUFFERPTR, buffer,
           CURLFORM_BUFFERLENGTH, len,
           CURLFORM_END);
curl_formadd(&formpost,
           &lastptr,
           CURLFORM_COPYNAME, "name[]",
           CURLFORM_BUFFER, "buffer",
           CURLFORM_BUFFERPTR, buffer,
           CURLFORM_BUFFERLENGTH, len,
           CURLFORM_END);