Yii结合CKEditor实现图片上传功能
发布:smiling 来源: PHP粉丝网 添加日期:2021-02-19 12:18:23 浏览: 评论:0
这篇文章主要介绍了Yii结合CKEditor实现图片上传功能,Yii是大名鼎鼎的PHP开发框架,CKEditor则是大名鼎鼎的所见即所得编辑器,需要的朋友可以参考下。
这几天做的一个项目中需要在所见即所得编辑器中实现图片上传的功能,我因为比较喜欢CKEditor的界面而选择了它。虽然有跟CKEditor配合良好的CKFinder,不过这个东东的功能太复杂,简单看了下CKEdtior的文档,发现这个功能还是可以自己实现而不用借助CKFinder的。
下面代码虽然基于Yii Framework的,但是用其他框架或者语言思路却是完全一样的,有需要的童鞋可以参考一下。
首先要让CkEditor出现图片上传的功能,需要配置编辑器的filebrowserImageUploadUrl属性:
- CKEDITOR.replace( 'editor1',
 - {
 - filebrowserUploadUrl : '/uploader/upload.php',
 - filebrowserImageUploadUrl : '/uploader/upload.php?type=Images'
 - });
 
然后在对应的URL上实现图片上传的功能,并向CKEditor返回特定格式的HTML代码,CKEditor就能正常预览并插入图片了。
下面只截取控制器的部分代码,Controller部分我是这样实现的:
- /**
 - * 保存上传的图片
 - *
 - * @return string javascript code
 - * @author lfyzjck
 - **/
 - public function actionImg($type, $CKEditor, $CKEditorFuncNum, $langCode = 'zh-cn')
 - {
 - if(emptyempty($CKEditorFuncNum) || $type != 'Images'){
 - $this->mkhtml($CKEditorFuncNum,'','错误的函数调用');
 - }
 - if(isset($_FILES['upload'])){
 - //获取关于图片上传配置
 - $options = Options::model()->findByPk(1);
 - $form = new UploadForm('image',$options);
 - $form->upload = CUploadedFile::getInstanceByName('upload');
 - if($form->validate()){
 - //文件名:时间+源文件名
 - $target_filename = date('Ymd-hm',time()).$form->upload->getName();
 - $path = Yii::app()->basePath.'/../uploads/'.$target_filename; //图片保存路径
 - $form->upload->saveAs($path);
 - $this->mkhtml($CKEditorFuncNum,Yii::app()->baseUrl.'/uploads/'.$target_filename, "上传成功");
 - }
 - else{
 - $this->mkhtml($CKEditorFuncNum,'',$form->getError('upload'));
 - }
 - }
 - }
 - /**
 - * 返回CKEditor的提示信息
 - *
 - * @return void
 - * @author lfyzjck
 - **/
 - private function mkhtml($fn, $fileurl, $message)
 - {
 - $str = '';
 - exit($str);
 - }
 
需要特别说明的mkhtml函数,他会调用CKEditor的函数产生提示信息。上传成功的时候将图片链接返回,CKEditor会根据URL生成图片预览。
然后是UploadForm的代码,这里会验证图片的格式和大小是否符合要求,代码如下:
- class UploadForm extends CFormModel
 - {
 - public $upload;
 - private $options;
 - private $type;
 - public function __construct($type, $options){
 - $this->options = $options;
 - $this->type = $type;
 - }
 - /**
 - * Declares the validation rules.
 - * The rules state that username and password are required,
 - * and password needs to be authenticated.
 - */
 - public function rules()
 - {
 - return array(
 - array('upload', 'file',
 - 'types' => $this->options->getAttribute("allow_".$this->type."_type"),
 - 'maxSize' => 1024 * (int)$this->options->getAttribute("allow_".$this->type."_maxsize"),
 - 'tooLarge'=>'文件大小超过限制',
 - ),
 - );
 - }
 - }
 
Tags: Yii CKEditor
- 上一篇:在Yii框架中使用PHP模板引擎Twig的例子
 - 下一篇:CI框架中zip类应用示例
 
相关文章
- ·Yii中单独为module加载Bootstrap或其他组件的4种方法(2014-01-07)
 - ·yii2超好用的日期组件和时间组件(2019-07-30)
 - ·详解PHP的Yii框架中扩展的安装与使用(2019-10-20)
 - ·PHP的Yii框架中过滤器相关的使用总结(2019-10-31)
 - ·简介PHP的Yii框架中缓存的一些高级用法(2019-10-31)
 - ·深入解析PHP的Yii框架中的缓存功能(2019-11-05)
 - ·PHP的Yii框架中创建视图和渲染视图的方法详解(2019-11-05)
 - ·PHP的Yii框架中Model模型的学习教程(2019-11-05)
 - ·详解PHP的Yii框架中的Controller控制器(2019-11-05)
 - ·yii2的ActiveForm表单使用的方法介绍(2020-02-15)
 - ·Yii2框架的csrf验证原理分析及token缓存解决方案(2020-04-05)
 - ·Yii操作数据库的3种方法(2020-10-26)
 - ·yii上传文件或图片实例(2020-11-05)
 - ·yii框架表单模型使用及以数组形式提交表单数据示例(2020-11-25)
 - ·yii框架通过控制台命令创建定时任务示例(2020-11-25)
 - ·yii框架配置默认controller和action示例(2020-11-25)
 
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
 - PHP新手上路(一)(7)
 - 惹恼程序员的十件事(5)
 - PHP邮件发送例子,已测试成功(5)
 - 致初学者:PHP比ASP优秀的七个理由(4)
 - PHP会被淘汰吗?(4)
 - PHP新手上路(四)(4)
 - 如何去学习PHP?(2)
 - 简单入门级php分页代码(2)
 - php中邮箱email 电话等格式的验证(2)
 
