Yii结合CKEditor实现图片上传功能_PHP教程
这几天做的一个项目中需要在所见即所得编辑器中实现图片上传的功能,我因为比较喜欢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'=>'文件大小超过限制',
),
);
}
}

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

隨著Web應用程式的廣泛使用,創建富文本編輯器變得越來越普遍。 CKEditor被廣泛認可為最好的富文本編輯器之一,因為它具有良好的可自訂性和易用性。本文將介紹如何使用PHP和CKEditor建立富文本編輯器。 CKEditor簡介CKEditor是一個開源的、跨平台的富文本編輯器,透過JavaScript實現。它提供了直覺易懂的工具列,包括字體樣式、格式化、圖

使用CakePHP框架實現圖片上傳和顯示的步驟引言:在現代Web應用程式中,圖片上傳和顯示是常見的功能需求。 CakePHP框架為開發者提供了強大的功能和便利的工具,使得實現圖片上傳和顯示變得簡單且有效率。本文將向您介紹如何使用CakePHP框架來實現圖片上傳和顯示。步驟1:建立文件上傳表單首先,我們需要在檢視文件中建立表單,以便使用者上傳圖片。以下是一個範例的

微信小程式實現圖片上傳功能隨著行動網路的發展,微信小程式已經成為了人們生活中不可或缺的一部分。微信小程式不僅提供了豐富的應用場景,還支援開發者自訂功能,其中包括圖片上傳功能。本文將介紹如何在微信小程式中實作圖片上傳功能,並提供具體的程式碼範例。一、前期準備工作在開始編寫程式碼之前,我們需要先下載並安裝微信開發者工具,並註冊成為微信開發者。同時,也需要了解微信

Vue技術開發如何處理圖片上傳和壓縮在現代web應用中,圖片上傳是一個非常常見的需求。然而,由於網路傳輸和儲存等方面的原因,直接上傳原始的高解析度圖片可能會導致上傳速度慢和儲存空間的大量浪費。因此,對於圖片的上傳和壓縮是非常重要的。在Vue技術開發中,我們可以使用一些現成的解決方案來處理圖片上傳和壓縮。以下將介紹如何使用vue-upload-compone

在當前資訊時代,大數據、人工智慧、雲端運算等技術已成為了各大企業關注的熱點。在這些技術中,顯示卡渲染技術作為一種高效能圖形處理技術,受到了越來越多的關注。顯示卡渲染技術廣泛應用於遊戲開發、影視特效、工程建模等領域。而對於開發者來說,選擇一個適合自己專案的框架,是一個非常重要的決策。在目前的語言中,PHP是一種相當有活力的語言,一些優秀的PHP框架如Yii2、Ph

如何使用PHP和Vue實現圖片上傳功能在現代網頁開發中,圖片上傳功能是非常常見的需求。本文將詳細介紹如何使用PHP和Vue來實現圖片上傳功能,並提供具體的程式碼範例。一、前端部分(Vue)首先需要在前端建立一個用來上傳圖片的表單。具體程式碼如下:<template><div><inputtype="fil

隨著雲端運算技術的不斷發展,資料的備份已經成為了每個企業必須要做的事情。在這樣的背景下,開發一款高可用的雲端備份系統尤其重要。而PHP框架Yii是一款功能強大的框架,可以幫助開發者快速建立高效能的Web應用程式。以下將介紹如何使用Yii框架開發一款高可用的雲端備份系統。設計資料庫模型在Yii框架中,資料庫模型是非常重要的一環。因為資料備份系統需要用到很多的表和關

隨著互聯網的發展,圖片上傳已經成為了網站和應用程式開發中的一個必不可少的功能。而在PHP領域,ThinkPHP6已經成為了一個非常流行的開發框架。在本文中,我們將介紹如何使用ThinkPHP6實作圖片上傳。一、建立專案和控制器首先,我們需要建立一個新的ThinkPHP6專案。可以使用Composer進行安裝,也可以在官網下載最新版。安裝完成後,在控制台中進入
