PHP curl模拟表单上传文件 微信公众号素材管理接口crul文件上传核心源码
/**
* curl 上传文件
* @param $url
* @param $filePath
* @param string $fileType 图片(image)、语音(voice)、视频(video)和缩略图(thumb)
* @param string $fileName
* @return bool|mixed
*/
static function uploadFile( $url ,$filePath,$fileType='image',$fileName='') {
$curl= curl_init ();
curl_setopt ( $curl, CURLOPT_URL, $url);
curl_setopt ( $curl
, CURLOPT_SSL_VERIFYPEER, FALSE );
curl_setopt ( $curl, CURLOPT_SSL_VERIFYHOST, FALSE );
//携带cookie文件
if(! empty($cookie)){
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie); //读取cookie
}
//携带头
if(!empty($header)){
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
}
//上传文件
if(!empty($filePath)){
$pathInfo = pathinfo($filePath);
if($fileName){
if(substr($fileName, strrpos($fileName, '.')+1)){
$fileName = $fileName.'.'.$pathInfo['extension'];
}
}else{
$fileName = $pathInfo['filename'].'.'.$pathInfo['extension'];
}
$file_obj = new \CURLFile($filePath,$fileType,$fileName);
$data['media'] = $file_obj;
if($fileType === 'video'){
$data['description'] = '{"title":"VIDEO_TITLE","introduction":"INTRODUCTION"}';
}
}
//发送post数据
if(! empty( $data) && !isset($file_obj)) {
curl_setopt ( $curl, CURLOPT_POST, 1 );
curl_setopt ( $curl, CURLOPT_POSTFIELDS, http_build_query($data) );
}elseif(!empty($data)){
curl_setopt ( $curl, CURLOPT_POST, 1 );
curl_setopt ( $curl, CURLOPT_POSTFIELDS, $data);
}
curl_setopt ( $curl, CURLOPT_RETURNTRANSFER, 1 );
$output= curl_exec ( $curl);
if(empty($output)) return false;
curl_close ( $curl);
return is_null(json_decode($output))?$output:json_decode($output,true);
}