我无法通过CURL将表单数据发布到位于不同主机上的接收PHP脚本。
我得到一个Array to string conversion错误
Array to string conversion
这是print_r我要发布的数组:
print_r
Array ( [name] => Array ( [0] => Jason [1] => Mary [2] => Lucy ) [id] => 12 [status] => local [file] => @/test.txt )
这是发生错误的行:
curl_setopt($this->ch, CURLOPT_POSTFIELDS, $post);
第三个参数 必须 是一个数组,因为在通过同一数组发送文件时,我需要将Content-Type标头设置multipart/form- data为该数组,因此无法将数组转换为查询字符串或使用http_build_query()。
Content-Type
multipart/form- data
http_build_query()
另外,我无法访问接收主机上的代码,因此无法序列化和反序列化数组。
我假设 名称 键的值是数组是导致此错误的原因,我还假设它CURLOPT_POSTFIELDS不支持多维数组。还有其他解决方法还是我注定要失败?
CURLOPT_POSTFIELDS
提前致谢!
您必须手动构建POST字符串,而不是传递整个数组。然后,您可以使用以下命令覆盖curl的自动选择内容标头:
curl_setopt($c, CURLOPT_HTTPHEADER, array("Content-type: multipart/form-data"));
序列化/ json-ifying会更容易,但是正如您所说,您无法控制接收端,因此您需要做一些额外的工作。