PHP   发布时间:2019-11-14  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Yii结合CKEditor实现图片上传功能大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

这几天做的一个项目中需要在所见即所得编辑器中实现图片上传的功能,我因为比较喜欢CKEditor的界面而选择了它。然有跟CKEditor配合良好的CKFinder,不过这个东东的功能太复杂,简单看了下CKEdtior的文档,发现这个功能还是可以自己实现而不用借助CKFinder的。

下面代码然基于Yii Framework的,但是用其他框架或者语言思路却是完全一样的,有需要的童鞋可以参一下。

首先要让CkEditor出现图片上传的功能,需要配置编辑器的filebrowserImageUploadUrl属性:

title"> 代码如下:
CKEDITOR.replace( 'editor1',
{
filebrowserUploadUrl : '/uploader/upload.php',
filebrowserImageUploadUrl : '/uploader/upload.php?type=Images'
});

然后在对应的URL上实现图片上传的功能,并向CKEditor返回特定格式的HTML代码,CKEditor就能正常预览并插入图片了。
下面只截取控制器的部分代码,Controller部分我是这样实现的:
title"> 代码如下:
/**
* 保存上传的图片
*
* @return String javascript code
* @author lfyzjck
**/
public function actionImg($type,$CKEditor,$CKEditorFuncNum,$langCode = 'zh-cn')
{
if(empty($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的代码,这里会验证图片的格式和大小是否符合要求。

title"> 代码如下:
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'=>'文件大小超过限制',
),
);
}
}

大佬总结

以上是大佬教程为你收集整理的Yii结合CKEditor实现图片上传功能全部内容,希望文章能够帮你解决Yii结合CKEditor实现图片上传功能所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:Yii