How to send multiple file upload in codeigniter? - php

I want to insert data with multiple file, but the file is null if i insert to database. this is my code
FROM ACTION CODE
<form action="<?php echo base_url();?>SystemCore/tambahKendaraan" method="POST" enctype="multipart/form-data">
<div class="form-group">
<label>Foto Foto Kendaraan</label>
<input type="file" class="form-control" multiple="" required="" name="addKendaraanDinasFoto[]">
<small>*Dapat Mencantumkan Foto Lebih Dari 1</small>
</div>
<button type="submit" class="btn btn-success">Simpan</button>
</form>
This i my Controller to upload data
public function tambahKendaraan()
{
$simpanData = array(
"id_jenis" => $this->input->post("addKendaraanDinasJenis"),
"plat_kendaraan" => $this->input->post("addKendaraanDinasPlat"),
"dinas_pengelola" => $this->input->post("addKendaraanDinasPengelola"),
"pemegang_kendaraan" => $this->input->post("addKendaraanDinasPemegang"),
"no_stnk" => $this->input->post("addKendaraanDinasSTNK"),
"no_rangka" => $this->input->post("addKendaraanDinasRangka"),
"masa_pajak" => $this->input->post("addKendaraanDinasPajak"),
"merk_kendaraan" => $this->input->post("addKendaraanDinasMerk"),
"warna_kendaraan" => $this->input->post("addKendaraanDinasWarna"),
"status_kendaraan" => $this->input->post("addKendaraanDinasStatus"),
);
if ($this->db->insert("tbl_mobil", $simpanData)) {
$insert_id = $this->db->insert_id();
date_default_timezone_get("Asia/Jakarta");
$this->load->library('upload');
$dataInfo = array();
$files = $_FILES;
$cpt = count($_FILES['addKendaraanDinasFoto']['name']);
for($i=0; $i<$cpt; $i++)
{
$_FILES['addKendaraanDinasFoto']['name']= $files['addKendaraanDinasFoto']['name'][$i];
$_FILES['addKendaraanDinasFoto']['type']= $files['addKendaraanDinasFoto']['type'][$i];
$_FILES['addKendaraanDinasFoto']['tmp_name']= $files['addKendaraanDinasFoto']['tmp_name'][$i];
$_FILES['addKendaraanDinasFoto']['error']= $files['addKendaraanDinasFoto']['error'][$i];
$_FILES['addKendaraanDinasFoto']['size']= $files['addKendaraanDinasFoto']['size'][$i];
$this->upload->initialize($this->set_upload_options());
$this->upload->do_upload();
$dataInfo[] = $this->upload->data();
$this->db->insert("tbl_fotomobil", $data);
}
foreach ($dataInfo as $infos) {
$data = array(
'id_mobil' => $insert_id,
'tgl_foto' => date('Y-m-d H:i:s'),
'foto_mobil' => $infos['file_name'],
);
}
$this->session->set_flashdata('notif', '<script>swal ( "Success" , "Data Kendaraan Berhasil Ditambahkan !" , "success" );</script>');
}else{
$this->session->set_flashdata('notif', '<script>swal ( "Error" , "Data Error !" , "error" );</script>');
}
redirect('kendaraan');
}
private function set_upload_options()
{
$config = array();
$config['upload_path'] = './upload/kendaraan/';
$config['allowed_types'] = 'jpg|png|jpeg|svg';
$config['max_size'] = 10097152;
$config['overwrite'] = FALSE;
return $config;
}
Result:
array(3) {
["id_mobil"]=>
int(0)
["tgl_foto"]=>
string(19) "2019-07-09 09:55:58"
["foto_mobil"]=>
string(0) ""
}
array(3) {
["id_mobil"]=>
int(0)
["tgl_foto"]=>
string(19) "2019-07-09 09:55:58"
["foto_mobil"]=>
string(0) ""
}

Controller :::
public function addmember()
{
if (empty($_FILES['user_image']['name']))
{
$this->form_validation->set_rules('user_image', 'User Image', 'required');
}
if (empty($_FILES['user_gallery']['name']))
{
$this->form_validation->set_rules('user_gallery[]', 'User Gallery', 'required');
}
if($this->form_validation->run() == FALSE)
{
$this->load->view('common_page/header');
$this->load->view('common_page/sidebar');
$this->load->view('form');
$this->load->view('common_page/footer');
}
else
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$this->load->library('upload', $config);
if($this->upload->do_upload('user_image') && !empty($_FILES['user_gallery']['name']))
{
$uploadData = $this->upload->data();
$uploadedFile = $uploadData['file_name'];
$dataInfo = [];
$files = $_FILES;
$cpt = count($_FILES['user_gallery']['name']);
for($i=0; $i<$cpt; $i++)
{
$_FILES['user_gallery']['name'] = $files['user_gallery']['name'][$i];
$_FILES['user_gallery']['type'] = $files['user_gallery']['type'][$i];
$_FILES['user_gallery']['tmp_name'] = $files['user_gallery']['tmp_name'][$i];
$_FILES['user_gallery']['error'] = $files['user_gallery']['error'][$i];
$_FILES['user_gallery']['size'] = $files['user_gallery']['size'][$i];
$this->upload->initialize($config);
$this->upload->do_upload('user_gallery');
$dataInfo[] = $this->upload->data();
}
$all_imgs = '';
if ( count($dataInfo) > 0) {
foreach ($dataInfo as $info) {
$all_imgs .= $info['file_name'];
$all_imgs .= ',';
}
}
$data = [
'user_image' => $uploadedFile,
'user_gallery' => $all_imgs
];
$this->Admin_model->insertData($data,'member');
$this->session->set_flashdata('success', 'Member Register Successfully !!!');
redirect('all/form');
}
else
{
}
}
}
VIEW :::
<form role="form" id="member_form" action="<?php echo
base_url('all/addmember');?>" method="post" enctype="multipart/form-data">
<div class="box-body">
<div class="form-group">
<label for="exampleInputFile">User Image</label>
<input type="file" id="file" name="user_image">
<?php echo form_error('user_image', '<div class="error">', '</div>'); ?>
</div>
<div class="form-group">
<label for="exampleInputFile">User Gallery Image</label>
<input type="file" id="gallery" name="user_gallery[]" multiple="">
<?php echo form_error('user_gallery', '<div class="error">', '</div>'); ?>
</div>
<div class="box-footer">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>

Related

Couldn't upload photo in php

I am using CodeIgniter framework for PHP.And I couldn't upload/update a photo.
Here is the edit-profile1.php View:
<form action="<?php echo base_url(); ?>users/update/" method="post" enctype="multipart/form-data" data-toggle="validator">
<div class="container">
<div class="padd col-xs-12 col-md-3">
<label class="label">My IC/Matric Card</label></br>
<input name="image" placeholder="Upload" class="upload friendly" type="file" accept="image/*" capture="environment" required>
</div>
<div class="col-xs-12 col-md-9 padd" style="overflow:auto;">
<div class="picture"><img id="blah" style="width: 100%; height: 100%"
<?php
if($userdata[0]['image'] == "")
{
echo "src='https://style.anu.edu.au/_anu/4/images/placeholders/person.png'";
}else{
echo "src='" . str_replace('/index.php/','/',base_url())."media/images/users/".$userdata[0]['image']."'";
}
?> >
</div>
</div>
</div>
<div class="container">
<div class="row">
<div>
<button type="submit" style='width: 100%; margin-top:20px; margin-bottom: 20px !important; background-color: #59d389; color: white;' class="btn btn-responsive btn-md center-block">Save Changes</button>
<input type="hidden" value="<?php echo $userdata[0]['id']; ?>" name="id" />
<input type="hidden" value="<?php echo $userdata[0]['account_status']; ?>" name="id" />
<input type="hidden" value="<?php echo $userdata[0]['image']; ?>" name="oldimage"/>
</div>
</div>
</div>
</form>
Here is the Users.php Controller:
public function profile()
{
$data['userdata'] = $this->usermodel->get_user($this->session->userdata('id'));
$this->load->view('edit-profile1',$data);
}
public function update()
{
$user = new Users_model();
// $user->phone1 = $this->input->post('phone1');
$user->account_status = 1;
//session data
$user->id = $this->session->userdata('id');
$user->password = $this->session->userdata('password');
$user->username = $this->session->userdata('username');
$user->email = $this->session->userdata('email');
$user->user_role = $this->session->userdata('user_role');
//id to be set
$id = $user->id;
if($_FILES['image'])
{
/* IMAGE UPLOADING START */
$image_type=$_FILES['image']['type'];
$image_size=$_FILES['image']['size'];
$image_tmp=$_FILES['image']['tmp_name'];
$d=date('YmdHis');
//$image_test_name = str_replace(" ", "_", $user->firstname.$user->lastname);
$image_type = str_replace("image/", ".", $image_type);
$image_name=$user->id . $image_type;
$imgurl= str_replace("/index.php/","/",base_url())."media/images/users/".$image_name;
if($image_type==".jpeg" || $image_type==".png" || $image_type==".gif" )
{
$this->usermodel->upload_user_image($image_name);
$this->usermodel->update_image($user->id, $image_name);
$user->image = $image_name;
}
else
{
$user->image = $this->input->post('oldimage');
}
/* IMAGE UPLOADING END */
}else{
$user->image = $this->input->post('oldimage');
}
$res = $this->db->update('users', $user, array('id' => $id));
$URL = base_url() . "users/profile/";
redirect($URL, "refresh");
}
}
And here is the Users_model.php Model:
public function upload_user_image($image_name) {
$config['upload_path'] = 'media/images/users';
$config['allowed_types'] = 'jpg|jpeg|png|gif';
$config['overwrite'] = TRUE;
$config['file_name'] = $image_name;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload('image')) {
$this->upload->display_errors('<span>', '</span>');
$data['error'] = $this->upload->display_errors();
} else {
$file_data = $this->upload->data();
$data['success'] = "Your file is uploaded";
}
}
public function update_image($id,$image_name){
$sql = "update users set image = '$image_name' where id = $id ";
$this->db->query($sql);
}
When the page redirect, the image is uploaded. The problem is, when refreshing manually, the placeholder image appear again and it means the photo wasn't updated to the database.
Here is the link to the website: https://www.yiyalo.com
You can log in using these credentials
id: qy_leong13#hotmail.com
pass: 123456
GO to My account > My profile to try it out
You need to upload file in controller itself. If you are using file upload library then don't need to do it manually with $_FILES variable.
public function update()
{
$user = new Users_model();
// $user->phone1 = $this->input->post('phone1');
$user->account_status = 1;
//session data
$user->id = $this->session->userdata('id');
$user->password = $this->session->userdata('password');
$user->username = $this->session->userdata('username');
$user->email = $this->session->userdata('email');
$user->user_role = $this->session->userdata('user_role');
//id to be set
$id = $user->id;
$config['upload_path'] = 'media/images/users';
$config['allowed_types'] = 'jpg|jpeg|png|gif';
$config['overwrite'] = TRUE;
//$config['file_name'] = $image_name;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload('image')) {
$this->upload->display_errors('<span>', '</span>');
$data['error'] = $this->upload->display_errors();
} else {
$file_data = $this->upload->data();
$data['success'] = "Your file is uploaded";
}
$res = $this->db->update('users', $user, array('id' => $id));
$URL = base_url() . "users/profile/";
redirect($URL, "refresh");
}

image upload in codeigniter giving error

I am upload an image in one my form but its always giving me an error like
"A PHP Error was encountered Severity: Notice Message:
Undefined index: vimage Filename: controllers/vouchers.php Line
Number: 42"
My View File code :
<?php echo form_open_multipart(site_url("promotions/add_item/"), array("class" => "form-horizontal","id"=>"addItem")) ?>
<div class="form-group">
<label class="col-sm-3 control-label">Show on</label>
<div class="col-sm-3">
Artist Directory : <input type="checkbox" name="artist_dir" value='1'>
</div>
<div class="col-sm-3">
Highlight : <input type="checkbox" name="highlight" value='1'>
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Title</label>
<div class="col-sm-9">
<input type="text" class="form-control" name="title" id="title" placeholder="Title">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Image</label>
<div class="col-sm-9">
<input type="file" name="pro_image">
</div>
</div>
<div class="form-group">
<label class="col-sm-3 control-label">Description</label>
<div class="col-sm-9">
<textarea class="form-control" rows="3" name="description" placeholder="Description"></textarea>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9">
<button type="submit" class="btn btn-success" name="submit" id="submit">Submit</button>
</div>
</div>
<?php echo form_close() ?>
My Controller Code :
<pre>
public function add_item(){
$this->load->library('upload');
$this->form_validation->set_rules('title','Title','required');
$this->form_validation->set_rules('description','Description','required');
print_r($_FILES['pro_image']);
if ($_FILES['pro_image']['size'] > 0) {
$this->upload->initialize(array(
"upload_path" => './uploads/',
"overwrite" => FALSE,
"encrypt_name" => TRUE,
"remove_spaces" => TRUE,
"allowed_types" => "gif|jpg|png|jpeg",
));
if (!$this->upload->do_upload('vimage')) {
$this->upload->display_errors();
}
$data = $this->upload->data();
echo 'img : '.$img = $data['file_name'];
}
exit;
if($this->form_validation->run()==FALSE){
echo '<div class="alert alert-dismissable alert-danger"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><small>'. validation_errors().'</small></div>';
}
else {
$title = $this->input->post('title');
$description = $this->input->post('description');
$artist_dir = $this->input->post('artist_dir');
$highlight = $this->input->post('highlight');
$this->promotions_model->add_item($title, $description,$artist_dir,$highlight);
}
}
</pre>
please let me know what i am doing wrong here
Try this
if ($_FILES['vimage']['size'] > 0) {
$this->load->library('upload');
$this->upload->initialize($this->set_upload_options());
$this->upload->do_upload();
$fileName = $_FILES['vimage']['name'];
private function set_upload_options()
{
// upload an image options
$config = array();
$config['upload_path'] = './upload/'; //give the path to upload the image in folder
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '0';
$config['overwrite'] = FALSE;
return $config;
}
For more read this Link
Try this
if (!empty($_FILES['vimage']))
{
$config['upload_path'] = './uploads/';
//$config['max_size'] = '102400';
$config['allowed_types'] = 'gif|jpg|png|jpeg';
$config['overwrite'] = FALSE;
$config['remove_spaces'] = TRUE;
$config['encrypt_name'] = TRUE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (!$this->upload->do_upload('vimage'))
{
$this->session->set_flashdata('error', $this->upload->display_errors());
//redirect('controller/method');
}
else
{
$this->session->set_flashdata('success', 'Image Has been Uploaded');
//redirect('controller/method');
$img = $data['file_name'];
}
}
Please check first,
print_r(_FILES);
If you get files array then you can use below code for uploading image.
function do_upload()
{
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
// You can give Image formats if you want to upload any video file.
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error = array('error' = $this->upload->display_errors());
// uploading failed. $error will holds the errors.
}
else
{
$data = array('upload_data' => $this->upload->data());
// uploading successfull, now do your further actions
}
}
I have added your code in my system it's working for fine for me.
public function add(){
$this->load->library('upload');
$this->load->helper('form');
$this->load->helper('url');
print_r($_FILES);die;
$this->form_validation->set_rules('title','Title','required');
$this->form_validation->set_rules('description','Description','required');
if ($_FILES['pro_image']['size'] > 0) {
$this->upload->initialize(array(
"upload_path" => './uploads/',
"overwrite" => FALSE,
"encrypt_name" => TRUE,
"remove_spaces" => TRUE,
"allowed_types" => "gif|jpg|png|jpeg",
));
if (!$this->upload->do_upload('vimage')) {
$this->upload->display_errors();
}
$data = $this->upload->data();
echo 'img : '.$img = $data['file_name'];
}
exit;
if($this->form_validation->run()==FALSE){
echo '<div class="alert alert-dismissable alert-danger"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><small>'. validation_errors().'</small></div>';
}
else {
$title = $this->input->post('title');
$description = $this->input->post('description');
$artist_dir = $this->input->post('artist_dir');
$highlight = $this->input->post('highlight');
$this->promotions_model->add_item($title, $description,$artist_dir,$highlight);
}
}

Codeigniter: trying to update profile with codeigniter

I'm new to codeigniter, and I'm trying to make a form that updates a profile. It has worked before but now it doesn't anymore.
I changed something in the view and it stopped working. I changed it back to where it was but it doesn't work anymore. I spend half a day trying to make it work again but I failed.
Maybe I don't see what you guys can see. At least I hope so.
this is my view:
<?php echo form_open_multipart('Gids/do_upload');?>
<img width="200px" src="<?php echo base_url()."uploads/".$profile[0]['image']; ?>" alt=""/>
<label for="">Uploade new picture:</label><input type="file" name="userfile" size="20" value="128.jpg" >
<input style="display: none" id="image" name="image" type="text" value="<?php echo "profile_picture".$_SESSION['id'].".jpg"; ?>"/>
<label for="naam">Naam:</label><input id="naam" name="naam" type="text" value="<?php echo $profile[0]['naam']; ?>"/>
<label for="voornaam">Voornaam:</label><input id="voornaam" name="voornaam" type="text" value="<?php echo $profile[0]['voornaam']; ?>"/>
<label for="email">Gebruikersnaam:</label><input id="gebruikersnaam" name="gebruikersnaam" type="text" value="<?php echo $profile[0]['gebruikersnaam']; ?>"/>
<label for="email">Email:</label><input id="email" name="email" type="text" value="<?php echo $profile[0]['email']; ?>"/>
<label for="opleiding">Opleiding:</label><input id="opleiding" name="opleiding" type="text" value="<?php echo $profile[0]['opleiding']; ?>"/>
<label for="school">School:</label><input id="school" name="school" type="text" value="<?php echo $profile[0]['school']; ?>"/>
<label for="wachtwoord">Wachtwoord:</label><input id="wachtwoord" name="wachtwoord" type="text" />
<label for="typeAgain">Type Opnieuw:</label><input id="typeAgain" type="text" />
<label for="over">Over mezelf:</label><textarea name="over" id="over" cols="30" rows="10"><?php echo $profile[0]['over']?></textarea>
<input type='text' style="display: none" name='student_id' value="<?php echo $profile[0]['student_id']?>"/>
<button class="btn btn-default" id="changeprofile" type="submit">Wijzigingen opslaan</button>
</form>
As you can see there is also a image upload
this is my controller:
function do_upload()
{
$this->load->model("Gids_model",'',true);
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '1000';
$config['file_name'] = 'profile_picture'.$_SESSION['id'].'.jpg';
$config['overwrite'] = 'TRUE';
$this->load->library('upload', $config);
if ( ! $this->upload->do_upload())
{
$error_upload = array('error' => $this->upload->display_errors());
redirect('Gids/datum', $error_upload);
}
else
{
$this->Gids_model->update_profile($this->input->post('student_id'), $this->input->post('voornaam'), $this->input->post('naam'), $this->input->post('email'), $this->input->post('wachtwoord'), $this->input->post('opleiding'), $this->input->post('school'), $this->input->post('over'), $this->input->post('image'), $this->input->post('gebruikersnaam'));
//$e = $this->input->post('student_id');
$data_upload = array('upload_data' => $this->upload->data());
redirect('Gids/datum', $data_upload);
}
}
And this is my model:
public function update_profile($id, $voornaam, $naam, $email, $wachtwoord, $opleiding, $school, $over, $image, $gebruikersnaam){
$data = array(
'student_id' => $id,
'voornaam' => $voornaam,
'naam' => $naam,
'email' => $email,
'wachtwoord' => $wachtwoord,
'opleiding' => $opleiding,
'school' => $school,
'over' => $over,
'image' => $image,
'gebruikersnaam' => $gebruikersnaam
);
$this->db->where('student_id', $id);
$this->db->update('tbl_student', $data);
}
Could you please help me out.
Also I don't know what the form_open_multipart('Gids/do_upload') is for, I got it from a tutorial to upload images with codeigniter.
Here is what i tried
public function do_upload() {
$this->load->model("Gids_model",'',true);
// load library or you can do it with autoloading
// feature of CI
$this->load->library('upload');
// make sure that the folder uploads is created
// at the root directory of the project
$config = array(
'upload_path' => './uploads',
'allowed_types' => 'jpg|jpeg|JPG|JPEG|png',
'max_size' => '1000',
'file_name' => 'profile_picture.jpg',
'overwrite' => true
);
// use initialize instead
$this->upload->initialize($config);
if ( ! $this->upload->do_upload('userfile'))
{
$error_upload = array('error' => $this->upload->display_errors());
// you can check the errors here by using var_dump();
// just uncomment the the line below
// var_dump($this->upload->display_errors());die();
redirect('Gids/datum', $error_upload);
}
else
{
$this->Gids_model->update_profile($this->input->post('student_id'), $this->input->post('voornaam'), $this->input->post('naam'), $this->input->post('email'), $this->input->post('wachtwoord'), $this->input->post('opleiding'), $this->input->post('school'), $this->input->post('over'), $this->input->post('image'), $this->input->post('gebruikersnaam'));
//$e = $this->input->post('student_id');
$data_upload = array('upload_data' => $this->upload->data());
redirect('Gids/datum', $data_upload);
}
}
I tried this and hope it helps:
Controller :
public function upload_profile() {
$input = $this->input->post();
$config['upload_path'] = './uploads/profile_pics/'; //path were I save the uploaded profile pics
$config['allowed_types'] = 'gif|jpg|png'; // allowed types that is mention
//size of the picture by default
$config['max_size'] = '100';
$config['max_width'] = '1024';
$config['max_height'] = '768';
$config['overwrite'] = true;
$this->load->library('upload', $config);
// display error if the picture is not on the config (sample bmp)
if ( ! $this->upload->do_upload())
{
$error = $this->upload->display_errors(); // display the errors
$data['upload_error'] = $error;
if($this->session->userdata('account_id') != null) { // if there is an account
$this->load->model('profile'); //model
$this->load->model('account'); //model
$data['user'] = $this->profile->get_profile($this->session->userdata('account_id')); //get_profile is a function in model
$data['account'] = $this->account->get_account($this->session->userdata('account_id')); //get_account is a function in model
$data['view'] = 'users/settings';
$data['title'] = "User's Settings";
$data['error'] = $error;
$this->load->view('masterpage', $data);
} else {
redirect(base_url('index.php/qablog/login'));
}
}
else
{
//if no error
$data = $this->upload->data();
$updateProfile = array(
'profile_pic' => $data['file_name']
);
$this->load->model('profile');
$this->profile->update_profile($this->session->userdata('account_id'), $updateProfile); // update the profile of the user
redirect(base_url('index.php/users/profile'));
}
}
Model get_profile():
public function get_profile($profile_id)
{
$this->db->select()->from('profile_tbl')->where('profile_id', $profile_id);
$query = $this->db->get();
return $query->first_row('array');
}
Model update_profile():
public function update_profile($profile_id, $data)
{
$this->db->where('profile_id', $profile_id);
$this->db->update('profile_tbl', $data);
return $this->db->affected_rows();
}
Model get_account():
public function get_account($account_id)
{
$this->db->select()->from('account_tbl');
$this->db->where('account_id', $account_id);
$query = $this->db->get();
return $query->result_array();
}
View :
//if there is an error
<?php
if ($error == 3) {?>
<div class="alert alert-success">
×
<strong>Success!</strong> Account or Profile Changed Successfully.
</div>
<?php } else if ($error == 1) { ?>
<div class="alert alert-warning">
×
<strong>Warning!</strong>Password Entered is Incorrect!.
</div>
<?php }else if ($error == 2) { ?>
<div class="alert alert-warning">
×
<strong>Warning!</strong>New Password and Confirm Password!.
</div>
<?php }?>
// default.png if haven't uploaded profile picture
<?php $profilePic = "default.png"; ?>
// if already uploaded profile picture it will display
<?php if($user['profile_pic'] != null) { ?>
<?php $profilePic = $user['profile_pic']; ?>
<?php } ?>
// if there is an error in uploading
<?php if(isset($upload_error)) { ?>
<div class="col-lg-12">
<div class="alert alert-danger alert-dismissable">
<button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button>
Uploading profile image could not be completed. <?php print_r($upload_error); ?>
</div>
</div>
<?php } ?>
<div class="col-lg-12">
//display the profile picture
<img src="<?php echo base_url('uploads/profile_pics/'.$profilePic); ?>" width="100" />
// call the controller upload_profile
<?php echo form_open_multipart(base_url('index.php/users/upload_profile'));?>
<input type="file" name="userfile" id="userfile" size="20" style="display:none;" />
<label for="userfile" class="btn btn-info btn-sm">Choose Image</label>
<input type="submit" class="btn btn-xs" value="edit profile" />
</form>
<h3 class="text-info"><?php echo $user['fname'].' '.$user['lname']; ?></h3>
</div>
Just follow this, and if you have problem just tell me. :)

CodeIgniter Upload Class Allowed File Types

I'm using Codeigniter Upload Class but I have a problem with allowed file types. I need to allow only pdf files to upload but any kind of file can be upload. Here is my code;
model (muser.php);
function cv_ekle()
{
$config['upload_path'] = 'uploads/cv';
$config['allowed_types'] = 'pdf';
$config['max_size'] = '0';
$config['max_width'] = '0';
$config['max_height'] = '0';
$this->load->library('upload', $config);
$this->upload->do_upload();
$data = $this->upload->data();
$this->load->library('upload', $config);
$upload_data = $this->upload->data(); //Returns array of containing all of the data related to the file you uploaded.
$file_name = $upload_data['file_name'];
$data = array
(
'userid' => $this->session->userdata('id'),
'kullanici' => $this->session->userdata('isim'),
'kategori' => $this->input->post('kategori'),
'tarih' => time(),
'dosya' => $file_name
);
if($this->db->insert('cv', $data))
{
return true;
}
else
{
return false;
}
}
controller (cv.php);
function cv_ekle()
{
if($this->muser->cv_ekle())
{
$this->session->set_flashdata('ok', 'CV başarıyla gönderildi!');
redirect('cv');
}
else
{
$this->session->set_flashdata('hata', 'Sadece PDF, Excel ya da Word formatında yükleme yapabilirsiniz!');
redirect('cv');
}
}
view (cv.php);
<form method="post" action="<?php echo site_url('cv/cv_ekle'); ?>" class="login" enctype="multipart/form-data">
<div class="controls">
<label for="email">Dosya: <span class="text-error">*</span></label>
<input type="file" id="pass" class="input-block-level" name="userfile" >
</div>
<div class="controls">
<label for="email">Kategori: <span class="text-error">*</span></label>
<select class="input-block-level" name="kategori">
<?php foreach($kategoriler as $kat) { ?>
<option value="<?php echo $kat['isim']; ?>"><?php echo $kat['isim']; ?></option>
<?php } ?>
</select>
</div>
<div class="controls">
<button type="submit" class="btn btn-primary">CV Yükle</button>
</div>
</form>
Thanks in advance!
function cv_ekle()
{
$config['upload_path'] = 'uploads/cv';
$config['allowed_types'] = 'pdf';
$config['max_size'] = '0';
$config['max_width'] = '0';
$config['max_height'] = '0';
$this->load->library('upload', $config);
$this->upload->do_upload();
$upload_data = $this->upload->data(); //Returns array of containing all of the data related to the file you uploaded.
$file_name = $upload_data['file_name'];
$data = array
(
'userid' => $this->session->userdata('id'),
'kullanici' => $this->session->userdata('isim'),
'kategori' => $this->input->post('kategori'),
'tarih' => time(),
'dosya' => $file_name
);
if($this->db->insert('cv', $data))
{
return true;
}
else
{
return false;
}
}

upload multiple files in different formats and sizes from one html form

I have a html form with some text input fields and three file upload fields. two of them should be images and one should be a file (pdf). I am submitting this form using jquery ajax. My code is working well but I feel this is not the proper OO way to do this I feel I am repeating my self. So if someone can guide me through a proper way It will be a big help.
This is my HTML form
<form class="form-horizontal save-image-form" enctype="multipart/form-data" method="POST" action="<?php echo base_url() . 'loc_emp_reg_prc'; ?>">
<fieldset>
<!-- File Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="loc_emp_idCpy">Employee ID Copy</label>
<div class="col-md-4">
<input id="loc_emp_idCpy" name="loc_emp_idCpy" class="input-file" type="file">
</div>
</div>
<!-- File Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="loc_emp_cntrct">Employee Contract</label>
<div class="col-md-4">
<input id="loc_emp_cntrct" name="loc_emp_cntrct" class="input-file" type="file">
</div>
</div>
<!-- File Button -->
<div class="form-group">
<label class="col-md-4 control-label" for="loc_emp_pht">Employee Photo</label>
<div class="col-md-4">
<input id="loc_emp_pht" name="loc_emp_pht" class="input-file" type="file">
</div>
</div>
</fieldset>
</form>
This is controller function
function loc_emp_reg_prc() {
if ($this->form_validation->run('loc_emp_reg') == FALSE) {
$validation_errors = validation_errors();
echo ($validation_errors);
} else {
$salt = 'ophl';
$lstEmpNbr = $this->home_basic_curd->select_ordered_and_limited('loc_emp_id', 'DESC', 'lco_emp_nmbr', 1, 'loc_emp');
$newEmpNbr = $this->empNumberCreate($lstEmpNbr, $salt);
$postArray = $this->input->post();
$this->admin_image_manage->create_folder('uploads/' . $newEmpNbr);
$uploadPath = 'uploads/' . $newEmpNbr . '/';
$max_size = '3000';
$max_width = '400';
$max_height = '600';
$types1 = 'gif|jpg|png|JPG|GIF|PNG|PDF|pdf';
$types2 = 'PDF|pdf';
$errorString = "";
$is_upload = $this->admin_image_manage->upload_this_image($uploadPath, $max_size, $max_width, $max_height, 'loc_emp_idCpy', $types1);
if ($is_upload['is_uploaded']) {
$post_array['loc_emp_idCpy'] = $is_upload['rdata'];
echo $post_array['loc_emp_idCpy'];
} else {
foreach ($is_upload['rdata'] as $error) {
$errorString = $error;
}
}
if (!empty($_FILES['loc_emp_cntrct']['name'])) {
$is_upload = $this->admin_image_manage->upload_document($uploadPath, $max_size, 'loc_emp_cntrct', $types2);
if ($is_upload['is_uploaded']) {
$post_array['loc_emp_cntrct'] = $is_upload['rdata'];
echo $post_array['loc_emp_cntrct'];
} else {
foreach ($is_upload['rdata'] as $error) {
$errorString = $error;
}
}
}
$is_upload = $this->admin_image_manage->upload_this_image($uploadPath, $max_size, $max_width, $max_height, 'loc_emp_pht', $types1);
if ($is_upload['is_uploaded']) {
$post_array['loc_emp_pht'] = $is_upload['rdata'];
echo $post_array['loc_emp_pht'];
} else {
foreach ($is_upload['rdata'] as $error) {
$errorString = $error;
}
}
echo $errorString;
}
}
This is the models function 'admin_image_manage'
function upload_this_image($uploadPath, $max_size, $max_width, $max_height, $image, $types) {
$config = array(
'allowed_types' => $types, //only accept these file types
'upload_path' => $uploadPath, //upload directory
'remove_spaces' => TRUE,
'max_size' => $max_size,
'max_width' => $max_width,
'max_height' => $max_height,
);
$this->load->library('upload', $config);
$upload_errors = "";
if (!$this->upload->do_upload($image)) {
$error = array('error' => $this->upload->display_errors());
return array(
'is_uploaded' => 0,
'rdata' => $error
);
} else {
$image_data = $this->upload->data();
$image = $image_data['file_name'];
return array(
'is_uploaded' => 1,
'rdata' => $image
);
}
}
function create_folder($folderPath) {
if (is_dir($folderPath)) {
return FALSE;
} else {
mkdir($folderPath);
return TRUE;
}
}

Categories