Heim >Backend-Entwicklung >PHP-Tutorial >Yii und CKEditor implementieren die Funktion zum Hochladen von Bildern
In diesem Artikel wird hauptsächlich die Bild-Upload-Funktion von Yii in Kombination mit CKEditor vorgestellt. Yii ist das berühmte PHP-Entwicklungsframework, und CKEditor ist der berühmte WYSIWYG-Editor.
Dies ist ein Projekt Ich habe vor ein paar Tagen daran gearbeitet, die Bild-Upload-Funktion im WYSIWYG-Editor zu implementieren. Ich habe mich für CKEditor entschieden, weil mir die Benutzeroberfläche besser gefiel. Obwohl es CKFinder gibt, der gut mit CKEditor zusammenarbeitet, ist seine Funktion zu kompliziert. Nach einem kurzen Blick auf die Dokumentation von CKEditor habe ich festgestellt, dass diese Funktion auch ohne die Hilfe von CKFinder implementiert werden kann.
Obwohl der folgende Code auf dem Yii-Framework basiert, ist die Idee bei der Verwendung anderer Frameworks oder Sprachen genau dieselbe.
Um die Bild-Upload-Funktion in CkEditor zu aktivieren, müssen Sie zunächst das filebrowserImageUploadUrl-Attribut des Editors konfigurieren:
CKEDITOR.replace( 'editor1', { filebrowserUploadUrl : '/uploader/upload.php', filebrowserImageUploadUrl : '/uploader/upload.php?type=Images' });
Dann implementieren Sie die Bild-Upload-Funktion auf der entsprechenden URL und geben a zurück CKEditor hat ein spezifisches Format für den HTML-Code und kann Bilder normal in der Vorschau anzeigen und einfügen.
Im Folgenden wird nur ein Teil des Controller-Codes abgefangen. Ich habe den Controller-Teil wie folgt implementiert:
/** * 保存上传的图片 * * @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); }
Die mkhtml-Funktion, die einer besonderen Erklärung bedarf, ruft die CKEditor-Funktion auf, um Eingabeaufforderungsinformationen zu generieren. Wenn der Upload erfolgreich ist, wird der Bildlink zurückgegeben und CKEditor generiert eine Bildvorschau basierend auf der URL.
Dann kommt der UploadForm-Code, der überprüft, ob Format und Größe des Bildes den Anforderungen entsprechen.
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'=>'文件大小超过限制', ), ); } }
Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.
Verwandte Empfehlungen:
Über Yii
Framework-Methode zum Abrufen aller Unterklassen unter der Kategorie
Wie Yii2 das Bootbox-Plug-in verwendet, um benutzerdefinierte Popup-Fenster zu implementieren
Verwenden Sie Yii2 Rbac-Berechtigungen, um das Menümenü zu steuern
Das obige ist der detaillierte Inhalt vonYii und CKEditor implementieren die Funktion zum Hochladen von Bildern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!