rpcms插件开发时插件配置文件如何实现图片上传
在开发rpcms插件的时候,使用到了配置文件,想让用户在后台可以直接配置修改图片,不需要再去服务器中操作了。
翻遍了官网的文档和教程也没见说这一块的。。估计官方正在慢慢更新教程吧。。
某的办法,只能靠自己了,也趁这个机会研究研究rpcms,功夫不负有心人哈,终于让我找到了。
其实吧,人家官方有说,在“帮助文档”中的“辅助函数”一栏中,有一个“uploadFiles”方法,这个就是官方封装好的上传文件函数。
原来是我误会官方大哥了,怪我没仔细仔细再仔细的看文档(说实话,就不能把文档整理清楚点吗...),下面看教程哈。
先看下uploadFiles这个方法的参数
uploadFiles(file, logId, pageId) file:需要上传的图片或文件 logId:文章的ID,可以不填 pageId:单页的ID,可以不填
首先,在 Setting.class.php 配置文件对应的模板中加入表单,这里以ajax上传图片为例。
比如: <div class="ws_upload"> <input type="file" accept="image/*" class="wx_file"> <button type="button" class="ws_upload_btn">上传微信二维码图片</button> </div>
对应的JS代码:
$(".ws_upload_btn").click(function(){ var _this=$(this), fileObj = ".wx_file", formData = new FormData(), file=$(fileObj)[0].files[0], isUpload=_this.data('isUpload') || false; if(isUpload) return !1; if(!file){ $.Msg('请先选择图片文件');return !1; } formData.append("files", file); _this.attr('disabled',true).data('isUpload',true); $.ajax({ 'url':"{:url('plugin/run')}?to=插件名称/Setting/uploadImg", 'type':'post', 'data':formData, 'contentType': false, 'processData': false, 'dataType':'json', 'mimeType': 'multipart/form-data', 'beforeSend':function(){ $.loading('正在上传...'); }, 'success':function(res){ if(res.code == 200){ $.closeModal(); var imgUrl=res.data; /* *这里是你的逻辑操作,返回的res中的data元素是上传图片的地址 */ }else{ $.Msg(res.msg); } }, 'complete':function(){ delete formData; $(fileObj).val(''),_this.attr('disabled',false).data('isUpload',false); }, 'error':function(){ $.Msg('请求服务器失败'); } }) })
和大家讲解一下上面的js,使用了FormData创建表单,ajax提交的url只需要改下?to=后面的内容就可以了
小知识:rpcms在后台运行插件是host/plugin/run.html?to=运行插件的方法
方法的写法:插件名称(即插件文件夹名称)/插件的mod/方法
如上面的ajax提交地址,我是把上传方法写在了插件文件夹中的Setting.class.php文件里面的uploadImg方法了。
最后,Setting.class.php的uploadImg方法
public function uploadImg(){ $file=isset($_FILES['files']) ? $_FILES['files'] : ''; if(empty($file)){ return json(array('code'=>-1,'msg'=>'上传图片不能为空')); } return json(uploadFiles($file)); }
到此为止,插件配置中就可以上传图片了,而且还是异步上传哟~
小伙伴们可以举一反三使用在其他地方哈。随便提醒下各位,一定要细心!细心!再细心!很多时候不是我们找不到,而是没注意到!
有 0 位网友评论: