美工统筹SEO,为企业电子商务营销助力!
Yii连系CKEditor完成图片上传功效
一佰互联网站建造(www.taishanly.com) 宣布日期 2020-04-29 09:01:09 阅读数: 104
这几天做的一个名目中须要在所见即所得编辑器中完成图片上传的功效,我由于比拟喜好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(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的代码,这里会考证图片的格局和巨细是不是是合适请求。
复制代码 代码以下:
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"=>"文件巨细跨越限定",
),
);
}
}