带S3上传的Yii Redactor

带S3上传的Yii Redactor,yii,amazon-s3,redactor,Yii,Amazon S3,Redactor,目前,我在Yii安装中使用此Imperavi Redactor小部件。它目前可以工作,但后来我注意到我可以通过WYSIWYG处理图像上传,因此我研究了如何启用这一功能,从而得出以下结论: <?php $attribute = 'info'; $this->widget('ImperaviRedactorWidget', array( // The textarea selector 'selector' => '.redacto

目前,我在Yii安装中使用此Imperavi Redactor小部件。它目前可以工作,但后来我注意到我可以通过WYSIWYG处理图像上传,因此我研究了如何启用这一功能,从而得出以下结论:

<?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函数,但目前不确定如何使用它们,因为我在任何地方都找不到关于它的文档,只是标准的图像上传。有人用过这个吗?如果是这样的话,你能把我引向正确的方向吗。
谢谢。

想明白了。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));

我明白了。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));