이 글에서는 주로 CKEditor와 결합된 Yii의 이미지 업로드 기능을 소개합니다. Yii는 유명한 PHP 개발 프레임워크이고, CKEditor는 유명한 WYSIWYG 편집기입니다. 저는 WYSIWYG 편집기에서 이미지 업로드 기능을 구현해야 합니다. 저는 인터페이스를 선호하기 때문에 CKEditor를 선택했습니다. CKEditor와 잘 작동하는 CKFinder가 있지만 그 기능이 너무 복잡합니다. CKEditor의 문서를 간략히 살펴본 후 이 기능은 CKFinder에 의존하지 않고도 스스로 구현할 수 있다는 것을 알았습니다.
다음 코드는 Yii 프레임워크를 기반으로 하지만 다른 프레임워크나 언어를 사용해도 아이디어는 완전히 동일합니다.
먼저 CkEditor에 이미지 업로드 기능을 추가하려면 편집기의 filebrowserImageUploadUrl 속성을 구성해야 합니다.
CKEDITOR.replace( 'editor1', { filebrowserUploadUrl : '/uploader/upload.php', filebrowserImageUploadUrl : '/uploader/upload.php?type=Images' });
그런 다음 해당 URL에 이미지 업로드 기능을 구현하고 특정 형식의 HTML 코드를 CKEditor를 사용하면 CKEditor가 정상적으로 미리 보고 그림을 삽입할 수 있습니다.
아래에는 컨트롤러 코드의 일부만 발췌되어 있습니다. 컨트롤러 부분은 다음과 같이 구현했습니다./** * 保存上传的图片 * * @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); }
그런 다음 이미지의 형식과 크기가 요구 사항을 충족하는지 확인하는 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'=>'文件大小超过限制', ), ); } }
관련 추천:
위 내용은 Yii와 CKEditor는 이미지 업로드 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!