2013-06-11 3 views
1

현재이 Imperavi Redactor 위젯을 Yii Install과 함께 사용하고 있습니다. https://github.com/yiiext/imperavi-redactor-widget. 그것은 현재 작동하지만 나는 그것을 사용하는 방법에 대한 보았다 그래서 어느 날이으로 이어지는 WYSIWYG를 통해 이미지 업로드를 처리 할 수 ​​있습니다주의 :Yii Redactor with S3 업로드

<?php 
    $attribute = 'info'; 
    $this->widget('ImperaviRedactorWidget', array(
     // The textarea selector 
     'selector' => '.redactor', 
     // Options 
     'options'=>array(
      'fileUpload'=>Yii::app()->createUrl('post/fileUpload',array(
       'attr'=>$attribute 
      )), 
      'fileUploadErrorCallback'=>new CJavaScriptExpression(
       'function(obj,json) { alert(json.error); }' 
      ), 
      'imageUpload'=>Yii::app()->createUrl('post/imageUpload',array(
       'attr'=>$attribute 
      )), 
      'imageGetJson'=>Yii::app()->createUrl('post/imageList',array(
       'attr'=>$attribute 
      )), 
      'imageUploadErrorCallback'=>new CJavaScriptExpression(
       'function(obj,json) { alert(json.error); }' 
      ), 
     ), 
    )); 
    ?> 

을하지만 내가 redactor.js를 통해 파고가있어 것으로 나타났습니다 S3 기능을 사용하지만 현재는 표준 이미지 업로드와 관련하여 어디서나 문서를 찾을 수 없으므로 현재 어떻게 사용하는지 확신 할 수 없습니다. 아무도 이것을 사용한 적이 있습니까? 그렇다면 올바른 방향으로 나를 이끌 수 있습니다. 감사합니다. .

답변

1

알아 냈습니다. Redactor의 "S3"지시는 상상력을 많이 남기고 작동하지 않는 것 같습니다. 그래서 나는 내 자신의 접근 방식을 취했다.

$this->widget('ImperaviRedactorWidget', array(
     // The textarea selector 
     'selector' => '.redactor', 
     // Some options, see http://imperavi.com/redactor/docs/ 
     'options'=>array( 
      'fileUpload'=>'../upload', 
      'Upload'=>'../upload', 
       ), 
    )); 

컨트롤러에 업로드 작업이 생성되었습니다.

public function actionUpload(){ 
      $S3_KEY = ''; 
     $S3_SECRET = ''; 
     $S3_BUCKET = ''; 

     $S3_URL = 'http://s3.amazonaws.com/'; 

     // expiration date of query 
     $tempFile = $_FILES['file']['tmp_name']; 
     $filename = $_FILES['file']['name']; 

     $s3 = new A2S3(); 
     $s3->putObject(array(
      'Bucket' => $S3_BUCKET, 
      'Key' => $filename, 
      'Body' => fopen($tempFile, 'r+'), 
      'ACL' => 'public-read', 
     )); 

     $array = array(
     'filelink' => 'http://'.$S3_BUCKET.$filename 
     ); 

     echo stripslashes(json_encode($array));