Uploadify + Yii

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
gouranga
Сообщения: 6
Зарегистрирован: 2009.05.03, 22:00

Uploadify + Yii

Сообщение gouranga »

наваял недавно экстеншн для uploadify.
все бы хорошо, но доступ к загрузке ограничен только для авторизованных пользователей, а флеш не умеет использовать куки.

я не смог найти встроенное решение, подскажите как лучше организовать передачу куки/каких-то-других-параметров через uploadify (параметр scriptData в опциях), чтобы 403 не вываливалось? :(
gouranga
Сообщения: 6
Зарегистрирован: 2009.05.03, 22:00

Re: Uploadify + Yii

Сообщение gouranga »

сам выкрутился. =)

вот так создаю:

Код: Выделить всё

    public function init()
    {
        list($name,$id) = $this->resolveNameID();
        $baseDir = dirname(__FILE__);
        $cs = Yii::app()->getClientScript();
        
        // .swf files to assets
        $uploadify = Yii::app()->getAssetManager()->publish($baseDir.DIRECTORY_SEPARATOR.'uploadify');
        $cs->registerScriptFile($uploadify.'/swfobject.js');
        // we use jquery
        $cs->registerCoreScript('jquery');
        $cs->registerScriptFile(Yii::app()->getAssetManager()->publish($baseDir.DIRECTORY_SEPARATOR.'jquery').'/jquery.uploadify.v2.1.0.js');
        $cs->registerCssFile(Yii::app()->getAssetManager()->publish($baseDir.DIRECTORY_SEPARATOR.'css').'/uploadify.css');
        
        $sessid = session_id();
        $uploadurl = Yii::app()->createUrl($this->getController()->id."/upload");
    
        $js =<<<EOP
    jQuery("#{$id}_Loader").uploadify({
        'uploader': '{$uploadify}/uploadify.swf',
        'cancelImg': '{$uploadify}/cancel.png',
        'script': '{$uploadurl}',
        'buttonText' : ' ',
        'fileDesc': 'Изображения',
        'fileExt': '*.jpg;*.jpeg;*.gif;*.png',
        'multi': false,
        'scriptData': {'PHPSESSID' : '{$sessid}'},
        'onComplete': function(event, queueID, fileObj, response, data) {
            alert(response);
        },
        'auto': true
    });
EOP;
        $cs->registerScript('Yii.'.get_class($this).'#'.$id, $js, CClientScript::POS_READY);
        
        if($this->hasModel()) {
            $html = CHtml::activeHiddenField($this->model, $this->attribute, $this->htmlOptions);
        }
        else
        {
            $html = CHtml::activeHiddenField($name, $this->value, $this->htmlOptions);
        }
        
        $html .= "<div id=\"{$id}_Loader\">You have a problem with your javascript</div>";
        
        echo $html;
    } 
и перед описанием контроллера добавил:

Код: Выделить всё

if(isset($_POST['PHPSESSID']))
    session_id($_POST['PHPSESSID']);
 
работает :)
Аватара пользователя
Ozzy
Сообщения: 269
Зарегистрирован: 2009.04.02, 15:09
Откуда: Украина, Одесса

Re: Uploadify + Yii

Сообщение Ozzy »

весьма не безопасно
Мой маленький блог - http://dbhelp.ru
gouranga
Сообщения: 6
Зарегистрирован: 2009.05.03, 22:00

Re: Uploadify + Yii

Сообщение gouranga »

подскажи как сделать лучше?
засунуть в сам экшн не получается, т.к. проверка доступа же идет заранее.
Аватара пользователя
Ozzy
Сообщения: 269
Зарегистрирован: 2009.04.02, 15:09
Откуда: Украина, Одесса

Re: Uploadify + Yii

Сообщение Ozzy »

меня лично смущает

Код: Выделить всё

if(isset($_POST['PHPSESSID']))
session_id($_POST['PHPSESSID']); 
Мой маленький блог - http://dbhelp.ru
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: Uploadify + Yii

Сообщение Ekstazi »

Ozzy иначе не получится.
gouranga я бы использовал onBeginRequest.
gouranga
Сообщения: 6
Зарегистрирован: 2009.05.03, 22:00

Re: Uploadify + Yii

Сообщение gouranga »

Ekstazi, спасибо. Так в итоге и сделаю сейчас.
Ответить