说到zblog插件,首先肯定要有zblog,先下载安装zblog,在管理后台登陆上开发者账号(确保开发者模式为开启状态),并新增一个插件
应用创建好了之后,我们在网站目录/zb_users/plugin下就能看到我们填写的插件id的文件夹名
走到这里我们就要想这个插件需要调用到什么接口了,对了,附件是吧?到官方wiki找到相对应的接口列表:
打开应用下的include.php能看到已经有了三个方法UninstallPlugin_qcloud_cos,InstallPlugin_qcloud_cos和ActivePlugin_qcloud_cos,这里是卸载方法,安装方法和处理方法。从腾讯云的开发文档上我们可以看到是需要appid,secretid,secretkey,bucket,region,这几个参数,关于参数的获取方式我们在这里不说了,可以参考腾讯云cos开发文档:https://cloud.tencent.com/document/product/436/6052
做一款应用首先是让用户不更改代码的情况下,能用上这款插件,这时候我们就需要做一个页面,让用户去填写这些信息。在这之前,要先整理下需要用户提供什么参数,初始化,放到安装方法里面,赋空值。
所以我就需要这样来写:
functionUninstallPlugin_qcloud_cos(){global$zbp;if(!$zbp->Config('qcloud_cos')->HasKey('versions')){ $zbp->Config('qcloud_cos')->versions ='1.0'; $zbp->Config('qcloud_cos')->appid =''; $zbp->Config('qcloud_cos')->secretid =''; $zbp->Config('qcloud_cos')->secretkey =''; $zbp->Config('qcloud_cos')->bucket =''; $zbp->Config('qcloud_cos')->savePath =''; $zbp->SaveConfig('qcloud_cos'); } $zbp->Config('qcloud_cos')->versions ='1.0'; $zbp->SaveConfig('qcloud_cos');}
然后就剩下卸载的方法了,卸载的话我们不需要处理。看回我们刚刚查询到的系统接口,菜单我们是不需要的,则有3个方法需要我们来处理,所以要创建3个方法
functionqcloudCos_GetUrl(){}functionqcloudCos_SaveFile(){}functionqcloudCos_SaveFileBase64(){}
最后将这三个方法钩上
functionActivePlugin_qcloud_cos(){ Add_Filter_Plugin('Filter_Plugin_Upload_Url','qcloudCos_GetUrl'); Add_Filter_Plugin('Filter_Plugin_Upload_SaveFile','qcloudCos_SaveFile'); Add_Filter_Plugin('Filter_Plugin_Upload_SaveBase64File','qcloudCos_SaveFileBase64');}functionqcloudCos_GetUrl(){}functionqcloudCos_SaveFile(){}functionqcloudCos_SaveFileBase64(){}
勾上之后我们来测试一下
走到这里证明成功了,接下来可以像传统开发那样,去编写代码了。
先用自己账号进行测试(我是直接引腾讯云的sdk)
functionqclouClient(){ $cosClient =newQcloud\Cos\Client(array('region'=>'ap-guangzhou','credentials'=>array('secretId'=>'COS_KEY','secretKey'=>'COS_SECRET')));return$cosClient;}functionqcloudCos_SaveFile($temp){try{ $result = qclouClient()->upload( $bucket='testbucket-1252448703', $key ='/111.txt', $body = fopen($temp,'rb'), $options =array("ACL"=>'private','CacheControl'=>'private')); print_r($result); }catch(\Exception$e) {echo"$e\n"; }}
走到这里之后发现获取不到文件拓展名- -,无奈之下打开了zb_system/function/c_system_plugin.php去查
发现还有个this变量,打印出来看看是什么
functionqcloudCos_SaveFile($temp , $f){ print_r($f);}
很好,这样就万物具备了
调用一下上传,看看会不会走到了catch,发现不会,代表上传成功。
接下来只要把配置页面和geturl补充了就完美收工了,可以在刚刚的f变量给多一个对象。
来看看效果:
base64的接口也是用相同的方式搞定,再把管理面板整理好,一个应用就出来了。
文章来自廖梓旭个人博客