How to upload image(photo), and path entry in database with update functionality
I saw many posts that community newbie is confuse in image/photo upload with random name. so I post this topic covering all useful things regarding to image/photo upload(not covering image attribute related functionality)
View :
_form.php file:.. //form options array... 'htmlOptions' => array( 'enctype' => 'multipart/form-data', ), ... .. //Other elements .. .. <div class="row"> php echo $form->labelEx($model,'image'); php echo CHtml::activeFileField($model, 'image'); // by this we can upload image php echo $form->error($model,'image'); </div> php if($model->isNewRecord!='1'){
Model :
just add below line in rules() method in Modelarray('image', 'file','types'=>'jpg, gif, png', 'allowEmpty'=>true, 'on'=>'update'), // this will allow empty field when page is update (remember here i create scenario update)
array('title, image', 'length', 'max'=>255, 'on'=>'insert,update'),
Controller :
Create controller will upload image with random name and enter required database entry.public function actionCreate() { $model=new Banner; // this is my model related to table if(isset($_POST['Banner'])) { $rnd = rand(0,9999); // generate random number between 0-9999 $model->attributes=$_POST['Banner']; $uploadedFile=CUploadedFile::getInstance($model,'image'); $fileName = "{$rnd}-{$uploadedFile}"; // random number + file name $model->image = $fileName; if($model->save()) { $uploadedFile->saveAs(Yii::app()->basePath.'/../banner/'.$fileName); // image will uplode to rootDirectory/banner/ $this->redirect(array('admin')); } } $this->render('create',array( 'model'=>$model, )); }
public function actionUpdate($id) { $model=$this->loadModel($id); if(isset($_POST['Banner'])) { $_POST['Banner']['image'] = $model->image; $model->attributes=$_POST['Banner']; $uploadedFile=CUploadedFile::getInstance($model,'image'); if($model->save()) { if(!empty($uploadedFile)) // check if uploaded file is set or not { $uploadedFile->saveAs(Yii::app()->basePath.'/../banner/'.$model->image); } $this->redirect(array('admin')); } if($model->save()) $this->redirect(array('admin')); } $this->render('update',array( 'model'=>$model, )); }
No comments:
Post a Comment