Yii Framework Forum: Nadpisujące się obrazki (upload) - Yii Framework Forum

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

Nadpisujące się obrazki (upload) Rate Topic: -----

#1 User is offline   zegarmistrz001 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 06-April 09

Posted 20 October 2009 - 08:10 AM

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?
0

#2 User is offline   zegarmistrz001 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 06-April 09

Posted 23 October 2009 - 09:19 AM

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

#3 User is offline   sidewinder 

  • Standard Member
  • PipPip
  • Yii
  • Group: Members
  • Posts: 208
  • Joined: 08-July 09
  • Location:Poland

Posted 24 October 2009 - 10:29 AM

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

---------------------------------------------------------------------
"Never memorize what you can look up in books."
Albert Einstein
0

#4 User is offline   zegarmistrz001 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 06-April 09

Posted 25 October 2009 - 11:42 AM

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.
0

#5 User is offline   zegarmistrz001 

  • Junior Member
  • Pip
  • Yii
  • Group: Members
  • Posts: 34
  • Joined: 06-April 09

Posted 25 October 2009 - 11:43 AM

podwójny post
0

Share this topic:


Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users