Ошибка При Загрузке

При загрузке файлов выдает ошибку:

Call to a member function saveAs() on a non-object

Собственно сама строка:


$model->image->saveAs('images/poster');

Контроллер:


	public function actionCreate()

	{

		$model=new Film;

		if(isset($_POST['Film']))

		{

			$model->image=CUploadedFile::getInstance($model,'image');

			$model->attributes=$_POST['Film'];

			$model->created=date('Y-m-d');

			if($model->save()){

				$model->image->saveAs('images/poster');

				$this->redirect(array('index'));

			}

		}

		$this->render('create',array(

			'model'=>$model,

		));

	}

Форма:


echo $form->labelEx($model,'Изображение:'); 

echo $form->fileField($model,'image'); 

echo $form->error($model,'image');

Почитал рецепты, пересмотрел, погуглилб в чем ошибка так и не понял, за компомсижу долго, возможно ошибка под носом, как чаще всего и бывает. Надеюсь на ваш свежий взгляд со стороны




CUploadedFile::getInstance($model,'image');



что возвращает? Судя по всему Null. Права на запись в tmp есть?

Да, var_dump($model->image) возвратило NULL, проверял уже сегодня. Open server + windows на сколько знаю права на запись на всех папках. Имя файла получает, в БД записывает

Добавил в beginWidget строку ‘htmlOptions’ => array(‘enctype’ => ‘multipart/form-data’), что она значит, так и не понял… контроллер все также не может найти saveAs, но $model->image теперь содержит следующее:

object(CUploadedFile)#46 (7) { ["_name":"CUploadedFile":private]=> string(7) "111.jpg" ["_tempName":"CUploadedFile":private]=> string(47) "D:\Program\OpenServer\userdata\temp\phpACAB.tmp" ["_type":"CUploadedFile":private]=> string(10) "image/jpeg" ["_size":"CUploadedFile":private]=> int(32603) ["_error":"CUploadedFile":private]=> int(0) ["_e":"CComponent":private]=> NULL ["_m":"CComponent":private]=> NULL }

Она как раз и значит что форма может передавать файл :D




$model->image=CUploadedFile::getInstance($model,'image');

$model->attributes=$_POST['Film'];



поменяйте строки местами

Аж стыдно :unsure:

Ну savaAs находит, эт радует, ток теперь другая ошибка, вроде с путями, хотя прописан верно

move_uploaded_file(): The second argument to copy() function cannot be a directory

D:\Program\OpenServer\domains\yii\web\CUploadedFile.php(196)


return move_uploaded_file($this->_tempName,$file);

$model->image все также содержит ту ахинею




$model->image->saveAs('images/poster');



надо указать имя файла, например:




$filename = md5(time().uniqid()).'.jpg';

$model->image->saveAs('images/poster/'.$filename);



Фууууууфффф… наконец спать лягу))) всем большое спасибо за помощь