>  기사  >  백엔드 개발  >  Yii와 CKEditor는 이미지 업로드 기능을 구현합니다.

Yii와 CKEditor는 이미지 업로드 기능을 구현합니다.

不言
不言원래의
2018-06-15 11:23:171414검색

이 글에서는 주로 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);
}

특별한 설명이 필요한 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'=>'文件大小超过限制',
   ),
  );
 }
}

위 내용은 이 글의 전체 내용입니다. 모든 분들의 학습에 도움이 되었으면 좋겠습니다. 더 많은 관련 내용은 PHP 중국어 홈페이지를 주목해주세요!


관련 추천:

Yii 소개 카테고리 아래의 모든 하위 클래스를 얻는 프레임워크 방법


Yii2 Bootbox 플러그인을 사용하여 사용자 정의 팝업 창을 구현하는 방법


Yii2 rbac 권한을 사용하여 메뉴 메뉴 제어


위 내용은 Yii와 CKEditor는 이미지 업로드 기능을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.