Редактор Yii с загрузкой S3
В настоящее время я использую этот виджет 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, но в настоящее время не уверен, как их использовать, так как я нигде не смог найти документацию об этом, только стандартная загрузка изображений. Кто-нибудь когда-либо использовал это? Если это так, вы могли бы привести меня в правильном направлении. Благодарю.
1 ответ
Догадаться. Указания редакции "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));