Fork me on GitHub

Обёртка для плагина jQuery Uploadify

Используем в представлении views/form.php:

$this->widget('ext.yiiext.widgets.uploadify.EUploadifyWidget', array(
    // можно использовать как для поля модели
    'model'=>new UploadifyFile,
    'attribute'=>'uploadifyFile',
    // так и просто для элемента формы
    'name'=>'my_input_name',
    // Имя POST-параметра, через который будет посылаться ИД сессии
    'sessionParam'=>'PHP_SESSION_ID',
    // [настройки](http://www.uploadify.com/documentation/) плагина
    'options'=>array(
        'fileExt'=>'*.jpg;*.png;*.gif',
        'script'=>$this->createUrl('controller/action'),
        'auto'=>false,
        'multi'=>true,
        'buttonText'=>'Upload Images',
    ),
));

Использование бета-версии 3.0.0

$this->widget('ext.yiiext.widgets.uploadify.EUploadifyWidget',array(
    'package'=>array(
        'basePath'=>Yii::getPathOfAlias('ext.yiiext.widgets.uploadify').'/vendors/jquery.uploadify-v3.0.0',
        'js'=>array(
            'jquery.uploadify'.(YII_DEBUG?'':'.min').'.js',
            'swfobject.js',
        ),
        'css'=>array(
            'uploadify.css',
        ),
        'depends'=>array(
            'jquery',
        ),
    ),
));

Пример использования

Для использования нам нужны:

  • Модель формы.
  • Действие контроллера.

Пример модели

UploadifyFile.php:

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

Пример действия

Действие можно описать и как обычное действие контроллера, но здесь мы используем CAction, описанный в полном руководстве.

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()));
    }
}

Вы также можете использовать [EFileUploadAction] из yiiext.

Changelog

1.7

Warning: this version is not backwards compatible to 1.6 and required framework version 1.1.7.

  • Add experemental JS for beta version 3.0.0. (Veaceslav Medvedev)
  • JS updated to version 2.1.4 (Veaceslav Medvedev)

1.6

  • Added property $sessionParam that can be used to send session id via POST. (Veaceslav Medvedev)
  • JS updated to version 2.1.3. (Veaceslav Medvedev)
  • Fixed error with fileDesc option. (Veaceslav Medvedev)

1.5

  • Code optimization. (Veaceslav Medvedev)

1.4

  • Rename class to EUploadifyWidget (Veaceslav Medvedev)

1.3

  • readme_ru, readme_en. (Veaceslav Medvedev)
  • Code style fixes. (Veaceslav Medvedev)
  • Compatible with Yii 1.1. (Veaceslav Medvedev)
  • New naming conventions. (Veaceslav Medvedev)

1.2

  • Transformed module into widget extension. (Veaceslav Medvedev)

1.1

  • Initial public release. (Veaceslav Medvedev)

Allows to use jQuery uploadify plugin as a widget.

Documentation

Downloads (Tags)

Resources