微信上传永久素材

  • 直接调用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;
}