一尘不染

用PHP和CURL发布多维数组

php

我无法通过CURL将表单数据发布到位于不同主机上的接收PHP脚本。

我得到一个Array to string conversion错误

这是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()

另外,我无法访问接收主机上的代码,因此无法序列化和反序列化数组。

我假设 名称 键的值是数组是导致此错误的原因,我还假设它CURLOPT_POSTFIELDS不支持多维数组。还有其他解决方法还是我注定要失败?

提前致谢!


阅读 309

收藏
2020-05-29

共1个答案

一尘不染

您必须手动构建POST字符串,而不是传递整个数组。然后,您可以使用以下命令覆盖curl的自动选择内容标头:

curl_setopt($c, CURLOPT_HTTPHEADER, array("Content-type: multipart/form-data"));

序列化/ json-ifying会更容易,但是正如您所说,您无法控制接收端,因此您需要做一些额外的工作。

2020-05-29