牛骨文教育服务平台(让学习变的简单)
博文笔记

php 用Curl提交数据「含有多维数组和文件上传」的处理方法

创建时间:2017-06-29 投稿人: 二维码在线生成 浏览次数:324

php 用Curl提交数据「含有多维数组和文件上传」的处理方法

php curl问题

像PHP调用API接口时 很多时候是会用到CURL 来提交的。具体的方法就不写了,相信大家都会。

这篇文章主要是解决提交的数据里同时包含多维数组和文件的解决方法

首先我们看下面这句代码

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));

这句就是想API接口提交数据的主要代码了。但是如果 $data 里有文件的话,由于http_build_query的原因 API那边是接收不到文件的

那我们直接换成下面这句

curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

发现多维数组又接收不到了

下面给出解决方法

自定义个方法将$data处理下(下面代码大家都能看懂,就不解释了)

function build_post_fields($data, $existingKeys = "", &$returnArray = [])

{

if (($data instanceof CURLFile) or ! (is_array($data) or is_object($data)))

{

$returnArray[$existingKeys] = $data;

return $returnArray;

} else

{

foreach ($data as $key => $item)

{

build_post_fields($item, $existingKeys ? $existingKeys . "[$key]" : $key, $returnArray);

}

return $returnArray;

}

}

最后使用

curl_setopt($ch, CURLOPT_POSTFIELDS, build_post_fields($data));

就OK了

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。