2013-06-11 30 views
1

目前我正在使用這個Imperavi Redactor Widget與我的Yii安裝。 https://github.com/yiiext/imperavi-redactor-widget。目前,它的作品,但後來我發現我可以通過所見即所得的處理圖片上傳,所以我看着如何啓用這使我這個:Yii Redactor與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));