今天在写curl上传文件到远程服务器的时候远端一直接收不到,我打印了错误码,一直是26,后来百度找了很久,找到了26代表的错误信息,如下:
看了半天路径,又想了半天,怎么会读取错误呢,又百度了半天,换了各种方式,@文件路径,new CURLFile(),curl_file_create()...等等,统统没用。
在我濒临崩溃,抱着垂死挣扎的心态在找错误时我终于!!找到了问题所在——路径!!!对没错,我看了好几次的路径,它缺少一个目录!!
找到问题后,我一步步调试,改成正确路径后,最后终于传过去了!!!
不多废话,下面贴上代码
封装的curl函数代码如下:
<?php
/**
* httpPost 向指定url发送post请求
* @param string $url 要请求的URL地址
* @param array $data 要传递的参数组成的数组
* @return 请求的url返回的数据
*/
function httpPost($url,array $data)
{
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_POST,true);
curl_setopt ($ch, CURLOPT_HEADER,false);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
$result = curl_exec($ch);
$info = curl_getinfo($ch);
if (curl_errno($ch)) {
echo '('.curl_errno($ch).')'.curl_error();
return FALSE;
}
curl_close($ch);
return $result;
}
调用代码如下(修改之前):
<?php
//获取本地存的文件路径
$imgUrl = getUploadFile($_FILES['file']);
if($imgUrl['status']==10000)
{
$url = "http://192.168.15.94/upload_img.php";
// 上传至远程服务器
$ymd = substr($imgUrl['fileName'],0,10);
$data = [
'file'=>new CURLFile(dirname(dirname(__FILE__)).'/file/bsy'.$ymd.md5($imgUrl['fileName']))
];
var_dump(httpPost($url,$data));
}