Загрузка файлов - тупик

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

Загрузка файлов - тупик

Сообщение sonar »

Смилуйтесь люди! 7-8 часов пинаю загрузку файлов, ппц в чистом HTML все на ура на том же сервере.

Суть, создал через Gii модель, контроллер и вид для галереи.

Чего хочу:

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

Вот 1001 вариант кода которым я пытаюсь это сделать:

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

public function actionCreate()
    {
        $model=new Gallery;
        // Uncomment the following line if AJAX validation is needed
        // $this->performAjaxValidation($model);
        if(isset($_POST['Gallery']))
        {
            $model->attributes=$_POST['Gallery'];
                        $model->image_big=CUploadedFile::getInstance($model,'image_big');
                        if($model->save())
                        {
                           $model->image_big->saveAs('gallery/');
                        }                    
                        $this->redirect(array('view','id'=>$model->id));
                }
        $this->render('create',array(
            'model'=>$model,
        ));
            } 
свойства в модели

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

/**
 * This is the model class for table "{{gallery}}".
 *
 * The followings are the available columns in table '{{gallery}}':
 * @property integer $id
 * @property string $image_big
 * @property string $image_small
 * @property string $album
 * @property string $description
 */ 
часть формы

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

<div class="row">
        <?php echo $form->labelEx($model,'image_big'); ?>
                <?php echo CHtml::activeFileField($model, 'image_big'); ?>
        <?php //echo $form->textField($model,'image_big',array('size'=>60,'maxlength'=>255)); ?>
        <?php echo $form->error($model,'image_big'); ?>
    </div>
Честно воспользовался поиском по форуму и погуглил, везде стандартные примеры.

кстати интересный момент, в итоге запись добавляется в момент выполнения

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

$model->image_big->saveAs('gallery/'); 
Просто белый экран.
kawabanga
Сообщения: 806
Зарегистрирован: 2013.10.12, 23:35
Откуда: Новосибирск

Re: Загрузка файлов - тупик

Сообщение kawabanga »

так, на всякий случай...

'htmlOptions'=>array('enctype'=>'multipart/form-data'),









UPD.:
Еще кое что нашел, попробуйте заменить
$model->image_big->saveAs(Yii::getPathOfAlias('webroot').'/images/company_logo/test.jpg');
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Загрузка файлов - тупик

Сообщение SiZE »

за месяц уже третий с этим вопросом. Сэм, может в рецепте уточнить этот момент? А то реально под словом 'path/to/localFile' можно понять директорию, без имени.
Последний раз редактировалось SiZE 2014.10.13, 10:06, всего редактировалось 1 раз.
sonar
Сообщения: 3
Зарегистрирован: 2014.10.13, 00:44

Re: Загрузка файлов - тупик

Сообщение sonar »

kawabanga писал(а):так, на всякий случай...

'htmlOptions'=>array('enctype'=>'multipart/form-data'),
в яблочко! Спасибо помогло,

Кстати что касается документации, хорошо что она есть! ) я честно говоря искренне верил что Framework настолько
интеллектуальный и в $model->image_big->saveAs('gallery/'); имя файла дописывал сам, ну брал его скажем из атрибута модели.
Оказывается нет( в общем я бы тоже в доке это поправил.

Еще раз всем спасибо!
Аватара пользователя
iAchilles
Сообщения: 41
Зарегистрирован: 2014.09.11, 19:44

Re: Загрузка файлов - тупик

Сообщение iAchilles »

... и в $model->image_big->saveAs('gallery/'); имя файла дописывал сам, ну брал его скажем из атрибута модели.
Оказывается нет( в общем я бы тоже в доке это поправил.
the file path used to save the uploaded file
В документации указано "ПУТЬ К ФАЙЛУ, который используется для сохранения загруженного файла." Там не написано "The directory path used for uploaded files". Поэтому совершенно предсказуемое поведение у данного метода. Еще там указано, что данный метод использует функцию move_uploaded_file(), второй параметр которой $destination, также требует указать путь для сохранения файла "директория/имяфайла".
ИМХО, разночтений тут нет никаких.

CUploadedFile::saveAs()
Ответить