onethink 后台编辑器 上传图片使用七牛驱动云存储
首先感谢这篇文章作者:
http://blog.csdn.net/weishiyong/article/details/40060551
写的不是很详细,而且没有颜色标示。和我当前使用的OT1.0版本代码又不一样。所以参考参考思路还是可以的。
经过2小时的调试和修改已经成功实现。
下面把过程记录下来。
首先修改全局Config文件: 'PICTURE_UPLOAD_DRIVER'=>'QINIU', //把原来的LOCAL改成七牛 修改七牛配置文件 'UPLOAD_QINIU_CONFIG'=>array( 'accessKey'=>'XXXXXXXXXXXXXX', //七牛通信秘钥 'secrectKey'=>'XXXXXX', //七牛通信秘钥 'bucket'=>'XXXXXX', //七牛空间名称,空间设置为公开,要用到外链 'domain'=>'XXXXX', //空间配置中的域名 'timeout'=>3600, ),
理论上改成功后就可以使用了。不过OT1.01版本不完善,需要继续修改 编辑器的控制类,修复下。
打开 Addons\EditorForAdmin\Controller\UploadController.class.php
<?php // +---------------------------------------------------------------------- // | OneThink [ WE CAN DO IT JUST THINK IT ] // +---------------------------------------------------------------------- // | Copyright (c) 2013 http://www.onethink.cn All rights reserved. // +---------------------------------------------------------------------- // | Author: huajie <banhuajie@163.com> // +---------------------------------------------------------------------- namespace Addons\EditorForAdmin\Controller; use Home\Controller\AddonsController; use Think\Upload; class UploadController extends AddonsController{ public $uploader = null; /* 上传图片 */ public function upload(){ session('upload_error', null); /* 上传配置 */ $setting = C('EDITOR_UPLOAD'); /* 调用文件上传组件上传文件 */ /**修改开始**/ $pic_driver = C('PICTURE_UPLOAD_DRIVER'); $this->uploader = new Upload($setting, C('PICTURE_UPLOAD_DRIVER'),C("UPLOAD_{$pic_driver}_CONFIG")); //$this->uploader = new Upload($setting, 'Local'); /**修改结束**/ $info = $this->uploader->upload($_FILES); if($info){ $url = C('EDITOR_UPLOAD.rootPath').$info['imgFile']['savepath'].$info['imgFile']['savename']; $url = str_replace('./', '/', $url); $info['fullpath'] = __ROOT__.$url; } session('upload_error', $this->uploader->getError()); return $info; } //keditor编辑器上传图片处理 public function ke_upimg(){ /* 返回标准数据 */ $return = array('error' => 0, 'info' => '上传成功', 'data' => ''); $img = $this->upload(); /**修改开始**/ $pic_driver = C('PICTURE_UPLOAD_DRIVER'); if (strtolower($pic_driver) == 'local') { $imgurl = $img['imgFile']['path']; } else { $imgurl = $img['imgFile']['url']; } /**修改结束**/ /* 记录附件信息 */ if($img){ $return['url'] = $imgurl; //修改这里 unset($return['info'], $return['data']); } else { $return['error'] = 1; $return['message'] = session('upload_error'); } /* 返回JSON数据 */ exit(json_encode($return)); } //ueditor编辑器上传图片处理 public function ue_upimg(){ $img = $this->upload(); $return = array(); $return['url'] = $img['fullpath']; $title = htmlspecialchars($_POST['pictitle'], ENT_QUOTES); $return['title'] = $title; $return['original'] = $img['imgFile']['name']; $return['state'] = ($img)? 'SUCCESS' : session('upload_error'); /* 返回JSON数据 */ $this->ajaxReturn($return); } }
主要修改了1.upload() 方法中加入动态加载上传驱动。
2.ke_upimg() 这里是后台富文本框上传成功后回调函数,里面有BUG,不能返回七牛URL,经过如上修改即可。