微信上传永久素材

  • 直接调用addMaterial方法上传永久素材
  • 上传时素材路径为绝对路径
  • curl post上传注意PHP版本
/**
 * @type 素材类型
 * @fileName 文件名
 * @title $type=video,视频标题
 * @introduction $type=video,视频描述
 * @return json
 */
public function addMaterial ($type,$fileName,$title='',$introduction='')
{
    if ($type=='uploadimg') {
        $urlType='uploadimg';
    }else{
        $urlType='addMaterial';
    }
    $url=$this->interfaceUrl($urlType);//接口url
    $realPath=$this->filePath($type,$fileName);
    $data['media']=$realPath;
    if ($type=='video') {
        $data['description']='{
                                 "title":"'.$title.'",
                          "introduction":"'.$introduction.'"
                            }';
    }
    $res=util::_curl($url,false,$data);
    return $res;
}

 

/**
 * @mediaType 素材类型
 * @param $fileName 1.jpg
 * @return string
 */
public function filePath ($mediaType,$fileName)
{
    $mediaPath=$this->mediaPath($mediaType);
    $realPath=$mediaPath.$fileName;
    if (class_exists('CURLFile')) {
        $filePath=new CURLFile($realPath);
    }else{
        $filePath='@'.$realPath;//php < 5.6
    }
    return $filePath;
}

 

/**
 * @mediaType 上传素材类型
 * @return string
 */
public function mediaPath($mediaType)
{
    switch ($mediaType) {
        case 'image':
            $mediaPath=IMAGE_PATH;
            break;
        case 'voice':
            $mediaPath=VOICE_PATH;
            break;
        case 'video':
            $mediaPath=VIDEO_PATH;
            break;
        case 'thumb':
            $mediaPath=THUMB_PATH;
            break;
        case 'uploadimg':
            $mediaPath=UPLOAD_IMG_PATH;
            break;
        default:
            $mediaPath='';
            break;
    }
    return $mediaPath;
}

利用curl post方式上传文件

PHP的cURL支持通过给CURL_POSTFIELDS传递关联数组(而不是字符串)来生成multipart/form-data的POST请求

if (class_exists('CURLFile')) {
    $realPath=new CURLFile(realpath($filePath));
}else{
    $realPath='@'.realpath($filePath);//php < 5.6
}
$data['media']=$realPath;
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);

不建议下面这种写法判断php版本

if (version_compare(phpversion(), '5.4.0') >= 0)