Ошибка HTTP: 500 uploadify-виджет для платформы yii - PullRequest
1 голос
/ 20 марта 2012

Я использую https://github.com/yiiext/uploadify-widget, и я провожу много времени, пытаясь решить ошибку HTTP Error: 500, и у меня нет идей, как отлаживать

здесь есть представление protected/views/admin/_form_photo.php:

<?php
$this->widget('ext.uploadify.EUploadifyWidget', array(
    // you can either use it for model attribute
    'model' => new UploadifyFile,
    'attribute' => 'file1',
    // or just for input field
    'name' => 'UploadifyFile_file1',
    // the name of the POST parameter where save session id
    'sessionParam' => 'PHP_SESSION_ID',
    // extension [options](http://www.uploadify.com/documentation/)
    'options' => array(
        'fileExt' => '*.jpg;*.png;*.gif',
        'script' => $this->createUrl('SwfUpload'),
        'debug' => true,
        'auto' => false,
        'multi' => true,
        'buttonText' => 'Upload Images',
        'onError' => 'js:function (event,ID,fileObj,errorObj) { alert(errorObj.type + \' Error: \' + errorObj.info); }'
    )
));
?>

У меня есть модель protected/models/UploadifyFile.php:

<?php

class UploadifyFile extends CFormModel
{
    public $uploadifyFile;

    public function rules()
    {
        return array(
            array(
                'uploadifyFile',
                'file',
                'maxSize' => 1024 * 1024 * 1024,
                'types' => 'jpg, png, gif, txt'
            )
        );
    }
}

?>

У меня есть действие protected/controllers/SwfUploadAction.php:

<?php
    class SwfUploadAction extends CAction
    {
        public $folder;

        public function run()
        {
            $folder = $this->folder;

            if ($folder === false) {
                throw new CException(Yii::t(__CLASS__, "Folder does not exists.", array()));
            }
            if (isset($_FILES['UploadifyFile']) === true) {
                $model                = new UploadifyFile;
                $model->attributes    = array(
                    'uploadifyFile' => ''
                );
                $model->uploadifyFile = CUploadedFile::getInstance($model, 'uploadifyFile');
                if ($model->validate() === false) {
                    throw new CException(Yii::t(__CLASS__, "Invalid file.", array()));
                }
                if (!$model->uploadifyFile->saveAs($folder . '/' . $model->uploadifyFile->getName())) {
                    throw new CException(Yii::t(__CLASS__, "Upload error.", array()));
                } else {
                    die("Upload success");
                }
            } else {
                throw new CException(Yii::t(__CLASS__, "File not sent.", array()));
            }
            throw new CException(Yii::t(__CLASS__, 'Unknown error.', array()));
        }
    }

    ?>

и действия от контроллера protected/controllers/AdminController.php:

function actions()
{
    return array(
        'SwfUpload' => array(
            'class' => 'application.controllers.SwfUploadAction',
            'folder' => 'images'
        )
    );
}

Я читал статьи, которые могут быть проблемы с аутентификацией флэш, и я должен использовать forgerySession http://code.google.com/p/yiiext/source/browse/trunk/app/extensions/yiiext/filters/forgerySession/, и я не знаю, как его настроить, Большое спасибо заранее!!!! * * 1023

1 Ответ

0 голосов
/ 21 марта 2012

Самый простой способ решить эту проблему - разрешить несанкционированный доступ к действию.То есть, если вы выполняете проверку подлинности в приложении, верните true для неавторизованных для конкретного действия загрузки.

Чтобы предложить более конкретный ответ, мне нужно знать, как вы выполняете проверку подлинности вваше приложение.

...