您的位置 首页 php

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了

文章来源:智云一二三科技

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

文章地址:https://www.zhihuclub.com/77771.shtml

关于作者: 智云科技

热门文章

网站地图