这个功能我在很多的网站上都使用过,包括现在使用的wordpress网站和前段时间自己折腾的thinkphp网站都使用了这个功能。
使用第三方api直接把图片传到我的FTP空间,或者OSS存储桶中。
使用的也还是 lskypro 这个1.6 版本的,不是最新的版本。
本站之前也发布了类似的代码,经过两三年的使用,现在我第三方的图床里面已经有三四千张的图片。
这些图片全部都是和所有的网站分离的,只要FTP空间不关闭,这些图片就跟随着网站的数据走。
今天说一说zblog怎么在后台添加这个功能。
我们要先找到zblog 的模板文件夹,这个功能我是写在模板里面的,同时在模板里面添加一个开关,总体能管理。
挂钩子:
首先,我要在网站模板中的 include.php 文件中挂一个钩子,按照官方的要求挂载就行。
// 自己添加的 if($zbp->Config('justblog')->tuchuangoff){ Add_Filter_Plugin('Filter_Plugin_Edit_Response4','justblog_3upload'); }
完整代码:
下面是我的所有方法,有需要的可以参考一下。
// 插入图片api function justblog_3upload() { global $zbp,$article; // html 和 css echo '<span><style>#up_to_chevereto {display: none!important;}#up_img_label {color:#fff!important;background-color: #16a085!important;border-radius: 5px!important;padding: 7px!important;height: 35px;width: 70px;}</style> <input id="up_to_chevereto" class="ssss" type="file" accept="image/*" multiple="multiple"/><label for="up_to_chevereto" id="up_img_label"><i class="fa fa-picture-o" aria-hidden="true"></i> 上传到图床</label> </span>'; echo ' <script> $(".ssss").change(function() { for(var i = 0; i < this.files.length; i++) { var f = this.files[i]; var formData = new FormData(); formData.append("file", f); formData.append("token", "'.$zbp->Config('justblog')->lankongyoken.'"); var res; $.ajax({ async: true, crossDomain: true, url: "'.$zbp->Config('justblog')->dsf_api.'", type: "POST", processData: false, contentType: false, data: formData, '; echo <<<AKK beforeSend: function(xhr) { $('#up_img_label') .html('<i class="fa fa-spinner rotating" aria-hidden="true"></i> Uploading...'); }, success: function(res) { $("#up_img_label") .html('<i class="fa fa-check" aria-hidden="true"></i> 上传成功,继续上传'); var foxxx = document.getElementById("zopo").value; var value = '<a href="'+res.data.url+'"><img class="aligncenter" src="'+res.data.url+'" alt="'+foxxx+'"></a>'; UE.getEditor('a54165f').execCommand('insertHtml', value); }, error: function() { $("#up_img_label") .html('<i class="fa fa-times" aria-hidden="true"></i> 上传失败,重新上传'); } AKK; echo ' }); } }); </script>'; }
需要注意的是有一个CSF问题,我今天花了点时间,到最后也没搞清楚是什么原因。