在一次项目中,做一个号码清洗的需求。大概是这样的:
用户把要检测(清洗)的号码一行一个放在txt文本上,在我们系统中上传到我们后端,通过后端去传给第三方接口,第三方接收到文件进行清洗操作。
给大家看下第三方的文档:
这就相当于我们后端只是个中转而已。
PHP做上传文件的功能是挺简单的,但是把文件上传到第三方还是第一次遇到。查找了好久资料,终于解决了这个问题。现在把代码贴一下,做下记录。
这是我封装的PHP发送HTTP请求的方法:
/**
* PHP发送Json对象数据, 发送HTTP请求
*
* @param string $url 请求地址
* @param array $data 发送数据
* @return String
*/
function postData($url, $data){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
重点是下面这句:(new \CURLFile)
$param['file'] = new \CURLFile($_FILES['file']['tmp_name']);
调用请求方法:
$result = $this->postData($this->upload_url,$param);