Nadpisujące się obrazki (upload)

Mam taki błahy problem. Chcę uploadować obrazek i to działa, ale chciałbym też zmienić nazwę pliku w bazie danych i serwerze na time().nazwaPliku tak aby nie było przypadków nadpisywania.

Jak mam przerobić kod:




	public function actionUpdate()

	{

		$model=$this->loadwizytowka();

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

		{

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

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

			if($model->save())

            {

                $model->logo->saveAs('upload/wizytowki/logo/'.$model->logo);

				$this->redirect(array('show','id'=>$model->id));

            }

		}

		$this->render('update',array('model'=>$model));

	}



aby nie nadpisywały się obrazki?

To jest jakiś sposób aby zmienić nazwę pliku w bazie danych oraz na serwerze w czasie uploadu pliku?

Witam,

wydaje mi się, że można to zrobić tak:




public function actionUpdate(){

    $model=$this->loadwizytowka();

    if(isset($_POST['wizytowka'])){

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

        $obrazek = CUploadedFile::getInstance($model,'logo');   //zmiana

        $model->logo = time().$obrazek.getName();               //zmiana

        if($model->save()){

            $model->logo->saveAs('upload/wizytowki/logo/'.$model->logo);

            $this->redirect(array('show','id'=>$model->id));

        }

   }

   $this->render('update',array('model'=>$model));

}

 

Linijkę: $model->logo = time().$obrazek.getName();

zastąpiłem: $model->logo = time().$obrazek->getName();

ponieważ wyświetlał błąd że $obrazek nie jest obiektem.

Następnie:


Fatal error: Call to a member function getError() on a non-object in /var/www/zegarmistrz/yiiProjects/yiiFramework/validators/CFileValidator.php on line 146

Po kilku strzałach wyeliminowałem też ten błąd. Teraz tak to wygląda:




	public function actionUpdate()

	{

		$model=$this->loadwizytowka();

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

		{

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

		    $obrazek = CUploadedFile::getInstance($model,'logo');

		    $obrazek->name = 'upload/wizytowki/logo/'.time().$obrazek->name;

		    $model->logo = $obrazek ;

		    if($model->save())

		    {

		        if(isset($model->logo))$model->logo->saveAs($model->logo);

			$this->redirect(array('show','id'=>$model->id));

		    }

		}

		$this->render('update',array('model'=>$model));

	}



Dziękuję sidewinder za twoją pomoc.

podwójny post