ckeditor + ckfinder + oss存储
ckeditor 与 ckfinder 的整合方法 网上有很多,这里我也就不说了。 (主要是以前整合的现在忘记咋弄的了0.0)
我这里整合后直接使用js代码
<script type="text/javascript"> CKEDITOR.replace('content', { filebrowserBrowseUrl: '__SYSTEM__/ckfinder/ckfinder.html', filebrowserImageBrowseUrl: '__SYSTEM__/ckfinder/ckfinder.html?type=Images', filebrowserFlashBrowseUrl: '__SYSTEM__/ckfinder/ckfinder.html?type=Flash', filebrowserUploadUrl: "{:U('Public/uploadCkfinder')}",//默认插件自带的上传地址__SYSTEM__/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Files', filebrowserImageUploadUrl: "{:U('Public/uploadCkfinder')}",//默认插件自带的上传地址'__SYSTEM__/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Images', filebrowserFlashUploadUrl: "{:U('Public/uploadCkfinder')}",//默认插件自带的上传地址'__SYSTEM__/ckfinder/core/connector/php/connector.php?command=QuickUpload&type=Flash', }); </script>
主要参数:filebrowserUploadUrl 地址修改了就可以。
我这里是修改成自己上传文件的地址 使用的环境 tp3.2.3的
后台上传方法:
/** * 富文本远程上传 */ public function uploadCkfinder(){ $upload = new \Think\Upload(); // 实例化上传类 $upload->maxSize = C('UPLOAD_FIEL_MAX_SIZE'); // 设置附件上传大小 $upload->exts = array('jpg', 'gif', 'png', 'jpeg'); // 设置附件上传类型 $upload->rootPath = './uploads/'; // 设置附件上传根目录 $upload->savePath = ''; // 设置附件上传(子)目录 // 上传文件 $info = $upload->upload(); //取出第一个元素 $data = current($info); if (!$info) { // 上传错误提示错误信息 echo '<script type="text/javascript"> window.parent.CKEDITOR.tools.callFunction("1", "", "'.$upload->getError().'"); </script>'; } else { //上传成功 $file = './uploads/'.$data['savepath'].$data['savename'];//文件路径,必须是本地的。 //上传本地文件到阿里oss $ossUpload = $this->aliOssUpload( $file , $data); if($ossUpload == '1000'){
//获取完整OSS地址 , 如果相站点下可以只获取 相对地址。 $path['path'] = get_oss_img_crop($data['savepath'].$data['savename'] ); echo '<script type="text/javascript"> window.parent.CKEDITOR.tools.callFunction("1", "'.$path['path'].'", "上传成功!" , "'.$data['savename'].' ");</script>'; exit; } else { echo '<script type="text/javascript"> window.parent.CKEDITOR.tools.callFunction("1", "", "上传失败"); </script>'; exit; } } }
//这里返回的是 完整地址,返回地址可以自己修改。
顺便付上 上传OSS方法
/** * 阿里对象存储-文件上传 * @datatime 2018/1/19 16:20 * @author lgp */ private function aliOssUpload( $file = '' , $info = array() ){ if( !$file || !$info ){ return '1008'; } // 上传成功 vendor('aliyun-oss-php-sdk-master.autoload'); $accessKeyId = C('ALI_OSS_CONFIG.accessKeyId'); $accessKeySecret = C('ALI_OSS_CONFIG.accessKeySecret'); $endpoint = C('ALI_OSS_CONFIG.endpoint');//你的阿里云OSS地址 $isCName = C('ALI_OSS_CONFIG.isCName'); $ossClient = new \OSS\OssClient($accessKeyId, $accessKeySecret, $endpoint , $isCName); $bucket = C('ALI_OSS_CONFIG.bucket');//oss中的文件上传空间 $object = $info['savepath'] .$info['savename'];//想要保存文件的名称 //$file = './uploads/'.$info['file']['savepath'].$info['file']['savename'];//文件路径,必须是本地的。 try{ $result = $ossClient->uploadFile($bucket,$object,$file); //上传成功,自己编码 if($result['status'] == 0){ if( C('ALI_OSS_CONFIG.unlink_file') == 1){ //是否删除本地 unlink($file); } return '1000'; //$this->apiReturn('1000' , $info['file']['savepath'] . $info['file']['savename'] ); } else { //$this->apiReturn('1002'); return '1008'; } }catch (Exception $e) { //$this->apiReturn('1002'); return '1008'; } }