[v0.3] File Upload Action

Выкладываем свои наработки
lexust4
Сообщения: 4
Зарегистрирован: 2013.08.11, 06:45

Re: [v0.3] File Upload Action

Сообщение lexust4 »

Доброго времени суток, использую Yii второй день, встал вопрос как закачать файл на сервер. По примеру с официального сайта не получяется, хочу использовать File Upload Action, но не могу сообразить куда положить файл компонента, и куда чего прописать. Помогите пожалуйста кто может :)
tamvodopad
Сообщения: 4
Зарегистрирован: 2013.12.04, 13:12

Re: [v0.3] File Upload Action

Сообщение tamvodopad »

Добрый день.

Подключаю File Upload Action в связке с ImperaviRedactorWidget.

Объявляю action:

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

public function actions()
    {
        return array(
            'upload' => array(
                'class' => 'ext.EFileUploadAction',
                'model'=>null,
                'attribute'=>null,
                'name' => 'file',
                'createDirectory' => true,
                'createDirectoryMode' => 0777,
                'createDirectoryRecursive' => true,
                'filenameRule'=>'md5($file->name).".".$file->extensionName',
                'path' => realpath(Yii::getPathOfAlias('basePath')) . '/upload/works/' . date('Y-m-d'),
                'onAfterUpload' => function($event){
                    if ($event->sender->hasErrors()) {
                        $result = CJSON::encode($event->sender->getErrors());
                    } else {
                        $path = str_replace(realpath(Yii::getPathOfAlias('basePath') . '/'), Yii::app()->baseUrl, $event->sender->path);
                        $path = Yii::app()->baseUrl . '/upload/works/' . date('Y-m-d');
                        $file = array(
                            'filelink' => $path . '/' . $event->sender->filename,
                            'filename' => $event->sender->filename,
                        );
                        if($type = Yii::app()->request->getQuery('type', 'file') == 'image') {}
                        $result = CJSON::encode($file);
                    }
                    echo stripslashes($result);
                    exit;
                }
            ),
        );
    } 
Но при попытке загрузки плюется ошибкой 500:

Событие "EFileUploadAction.onafterupload" привязано неверным обработчиком "NULL".

Что может быть не так?
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: [v0.3] File Upload Action

Сообщение slavcodev »

Странно, единственный вариант вижу что не поддерживаются анонимки. Точно версия PHP >= 5.3 ?
Жду Yii 3!
tamvodopad
Сообщения: 4
Зарегистрирован: 2013.12.04, 13:12

Re: [v0.3] File Upload Action

Сообщение tamvodopad »

Поддерживаются. php 5.4.4-14+deb7u5

Trace ошибки подробней:

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

2013/12/04 14:37:38 [error] [exception.CException] exception 'CException' with message 'Событие "EFileUploadAction.onafterupload" привязано неверным обработчиком "NULL".' in /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/base/CComponent.php:570
Stack trace:
#0 /home/gp/gp.gpdev.ru/public_html/protected/extensions/EFileUploadAction.php(232): CComponent->raiseEvent('onAfterUpload', Object(CEvent))
#1 /home/gp/gp.gpdev.ru/public_html/protected/extensions/EFileUploadAction.php(270): EFileUploadAction->onAfterUpload(Object(CEvent))
#2 /home/gp/gp.gpdev.ru/public_html/protected/extensions/EFileUploadAction.php(188): EFileUploadAction->afterUpload()
#3 /home/gp/gp.gpdev.ru/public_html/protected/extensions/EFileUploadAction.php(115): EFileUploadAction->upload()
#4 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/actions/CAction.php(76): EFileUploadAction->run()
#5 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/CController.php(308): CAction->runWithParams(Array)
#6 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/filters/CFilterChain.php(133): CController->runAction(Object(EFileUploadAction))
#7 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/filters/CFilter.php(40): CFilterChain->run()
#8 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/filters/CFilterChain.php(130): CFilter->filter(Object(CFilterChain))
#9 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/filters/CFilter.php(40): CFilterChain->run()
#10 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/CController.php(1145): CFilter->filter(Object(CFilterChain))
#11 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/filters/CInlineFilter.php(58): CController->filterAccessControl(Object(CFilterChain))
#12 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/filters/CFilterChain.php(130): CInlineFilter->filter(Object(CFilterChain))
#13 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/CController.php(291): CFilterChain->run()
#14 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/CController.php(265): CController->runActionWithFilters(Object(EFileUploadAction), Array)
#15 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/CWebApplication.php(282): CController->run('upload')
#16 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/web/CWebApplication.php(141): CWebApplication->runController('settings/upload')
#17 /home/gp/gp.gpdev.ru/vendor/yiisoft/yii/framework/base/CApplication.php(180): CWebApplication->processRequest()
#18 /home/gp/gp.gpdev.ru/public_html/index.php(22): CApplication->run()
#19 {main}
REQUEST_URI=/settings/upload
HTTP_REFERER=http://gp.gpdev.ru/ru/works/create 
tamvodopad
Сообщения: 4
Зарегистрирован: 2013.12.04, 13:12

Re: [v0.3] File Upload Action

Сообщение tamvodopad »

А на php 5.3, как раз, работает все ок.
Аватара пользователя
slavcodev
Сообщения: 3134
Зарегистрирован: 2009.04.02, 21:42
Откуда: Valencia
Контактная информация:

Re: [v0.3] File Upload Action

Сообщение slavcodev »

Не знаю тогда что происходит.
Попробуй ивент добавить не как анонимку а через callback функцию в контроллере
Жду Yii 3!
tamvodopad
Сообщения: 4
Зарегистрирован: 2013.12.04, 13:12

Re: [v0.3] File Upload Action

Сообщение tamvodopad »

Да, проблема именно в анонимке, через callback функции контроллера все работает.

Ну и проблема анонимок была решена отключением eAccelerator.
eAccelerator not compatible with anonymous function/closure under php 5.4.6

Спасибо!
Ekstazi
Сообщения: 1428
Зарегистрирован: 2009.08.20, 22:54
Откуда: Молдова, Бельцы
Контактная информация:

Re: [v0.3] File Upload Action

Сообщение Ekstazi »

Добавил поддержку composer и выложил на packagist, если добрые люди(Sam например) помогут мне, то и на yiigist появится.
Ответить