maher
(Elaissimaher)
August 3, 2012, 9:08am
1
Hi everybody
i want to create a form to update a user profile picture.
1- save the picture in the server
2- save the path of the picture in the user table in the DB.
This is my form
<div class="form" >
<?php $form=$this->beginWidget('CActiveForm', array(
'enableAjaxValidation'=>true,
'id'=>'formPhoto',
'htmlOptions'=>array('enctype'=>'multipart/form-data',
),
)); ?>
<p class="note">Fields with <span class="required">*</span> are required.
<div class="row" >
<?php echo $model->getThumbnail(); ?>
<br>
<?php echo $form->labelEx($model,'filename'); ?>
<?php echo CHtml::activeFileField($model, 'picture'); // see comments below ?>
<div class="row buttons" id="dvPhotoSubmit">
<?php echo CHtml::submitButton($model->isNewRecord ? 'EditPicture' : 'Save'); ?>
</div>
</div>
<?php $this->endWidget(); ?>
</div>
This is the controller
public function actionEditPicture(){
// Add page breadcrumb and title
$this->addPageTitle(Yii::t(__CLASS__, 'Edit your profile'));
$this->addBreadcrumb(Yii::t(__CLASS__, 'Edit Picture'), array('user/editPicture'));
$model = new User();
if(isset($_POST["User"])){
$model->attributes=$_POST["User"];
$model->picture = CUploadedFile::getInstance($model, 'picture');
[b] $model->picture->saveAs('/images/user/user.jpg');[/b]
$user = User::model()->findByPk(Yii::app()->user->id);
$user->picture = '/images/user/unknown-person.jpg';
//redirect to success pqge
}
$profileUser = User::model()->findByPk(Yii::app()->user->id);
$this->render('profile_editpicture', array('profileUser'=>$profileUser,'model'=>$model));
}
move_uploaded_file(/images/user/unknown-person.jpg): failed to open stream: No such file or directory
I understood that the problem is in the bold line, but i don’t knoy how to resolve it.
thank you for your help
use base url
<?php echo Yii::app()->request->baseUrl; ?>
Yii::app()->request->baseUrl.’/images/user/unknown-person.jpg’
maher
(Elaissimaher)
August 3, 2012, 9:20am
4
Same problem
PHP warning
move_uploaded_file(/images/user/unknown-person.jpg): failed to open stream: No such file or directory
Stack Trace
#0
/home/maher/www/chess24com/framework/web/CUploadedFile.php(197): move_uploaded_file("/tmp/phpMuHiba", "/images/user/unknown-person.jpg")
#1
–
/home/maher/www/chess24com/app/controllers/UserController.php(60): CUploadedFile->saveAs("/images/user/unknown-person.jpg")
55 $model = new User();
56 if(isset($_POST["User"])){
57 $model->attributes=$_POST["User"];
58 $model->picture = CUploadedFile::getInstance($model, 'picture');
59
60 $model->picture->saveAs(Yii::app()->request->baseUrl.'/images/user/unknown-person.jpg');
61 $user = User::model()->findByPk(Yii::app()->user->id);
62 $user->picture = '/images/user/unknown-person.jpg';
63 //redirect to success pqge
64
65 // $model->picture = 'test';
abennouna
(Abennouna)
August 3, 2012, 9:35am
5
Where is your images folder supposed to be?
If it’s in the webroot:
$model->picture->saveAs(Yii::getPathOfAlias('webroot') . '/images/user/user.jpg');
what is ur file name? user.jpg or unknown-person.jpg …i didnt get ur problem…
$model->attributes=$_POST['UserDetails'];
$model->photo=CUploadedFile::getInstance($model,'image');
if($model->save())
{
$model->photo->saveAs($_SERVER['DOCUMENT_ROOT'].Yii::app()->request->baseUrl.'/uploads/'.$model->image->name);
}.
maher
(Elaissimaher)
August 3, 2012, 9:44am
8
the Problem is that i have already a profile picture and i want to change it, so i have to upload a picture in the server, and change the user data and put the new path for the profile picture.
and now i have a new error
move_uploaded_file: failed to open stream: Permission denied
u got the error on save ?
maher
(Elaissimaher)
August 3, 2012, 9:59am
10
You mean SaveAs()
now it works very good, and i can find the file in the server.
thank you for your help.
traprajith
(Traprajith)
August 3, 2012, 10:02am
11
ok…ok so the error is on disply, right ?
traprajith
(Traprajith)
August 3, 2012, 10:08am
12
i think the problem is with the path
i used like this in one of my application, to display
'<img src="patients/'.$id.'/'.$dat->photo.'.jpg" width="182" height="169" />'
maher
(Elaissimaher)
August 3, 2012, 12:04pm
13
i think the problem is with the path
i used like this in one of my application, to display
'<img src="patients/'.$id.'/'.$dat->photo.'.jpg" width="182" height="169" />'
Yes thank you for your help i already resolve it from your last comment.
i made a stupid written mistake.
now it’s fixed.
thank you again for your help