1

目前我正在使用这个 Imperavi Redactor 小部件和我的 Yii 安装。https://github.com/yiiext/imperavi-redactor-widget。它目前可以工作,但后来我注意到我可以通过 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 函数,但目前不确定如何使用它们,因为我无法在任何地方找到关于它的文档,只是标准图像上传。有人用过这个吗?如果是这样,你能引导我走向正确的方向。谢谢。

4

1 回答 1

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));
于 2013-06-12T00:40:59.100 回答