In your view
In your UsersController.php
<div class="col-md-4"> <div class="box box-warning"> <div class="box-header"> <h3 class="box-title"><?php echo __('Profile Picture'); ?></h3> </div> <div class="box-body"> <?php echo $this->Form->create('User', array('action' => 'upload_profile_pic', 'role' => 'form', 'enctype'=>'multipart/form-data')); ?> <fieldset> <div class="row"> <div class="col-md-12"> <div class="form-group"> <?php echo $this->Form->input('photo', array('label' => false, 'type' => 'file', 'class' => 'form-control', 'id' => 'photo')); ?> </div><!-- .form-group --> </div> </div> <div class="row"> <br> <div class="col-md-6 col-md-offset-3"> <?php echo $this->Form->submit('Submit', array('class' => 'btn btn-lg btn-block btn-warning')); ?> </div> </div> </fieldset> <?php echo $this->Form->end(); ?> </div> </div> </div>
In your UsersController.php
/** * add method * * @return void */ public function upload_profile_pic() { if ($this->request->is('post')) { ini_set('upload_max_filesize', '64M'); //optional set_time_limit(600); //optional $filename = null; $newFileName = null; if (!empty($this->request->data['User']['photo']['tmp_name']) && is_uploaded_file($this->request->data['User']['photo']['tmp_name'])) { // Strip path information $image_dimension = getimagesize($this->request->data['User']['photo']['tmp_name']); $size = $this->request->data['User']['photo']['size']; //get filename $filename = Inflector::slug(pathinfo($this->request->data['User']['photo']['name'], PATHINFO_FILENAME)).'.'.pathinfo($this->request->data['User']['photo']['name'], PATHINFO_EXTENSION); $letters = 'abcefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; $randomName = substr(str_shuffle($letters), 0, 10); //create new filename to avoid replacing same filename $newFileName = date('YmdHis').'_'.$randomName.'.'.pathinfo($this->request->data['User']['photo']['name'], PATHINFO_EXTENSION); //upload file (file to upload, path to upload) move_uploaded_file($this->request->data['User']['photo']['tmp_name'], App::themePath('CakeAdminLTE').'webroot/img/profile_pic/'. $newFileName); $image_width = $image_dimension[0]; $image_height = $image_dimension[1]; $this->request->data['User']['user_id'] = AuthComponent::User('id'); // Set the file-name only to save in the database $this->request->data['User']['file_name'] = $filename; $this->request->data['User']['new_file_name'] = $newFileName; $this->request->data['User']['size'] = $size; $this->request->data['User']['dimension'] = $image_width.' x '.$image_height; if ($this->User->save($this->request->data)) { $this->Session->setFlash(__('The profile picture has been saved'), 'flash/success'); $this->redirect(array('action' => 'profile', AuthComponent::User('id'))); } } else { $this->Session->setFlash(__('The profile pic could not be saved. Please, try again.'), 'flash/error'); $this->redirect(array('action' => 'update', AuthComponent::User('id'))); } } }
Comments