i did not get image upload and save image
path in database
My table name is uploadimage
and controller name is upload.php
I use the following snippet for uploading file with multiple file upload field in the form, saving uploaded file to custom directories and finally saving the file location path to the database
$input1 = $this->input->post('input1'); //Input field value
$input2 = $this->input->post('input2'); //Input field value
$photo1 = ''; //File field value
$photo2 = ''; //File field value
$config['upload_path'] = './photo_gallery/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = '';
$this->load->library('upload', $config);
foreach($_FILES as $key=>$file) {
//$key will be the field name
$out_dir = "./photo_gallery/$key";
if(!file_exists($out_dir)) {
mkdir($out_dir, '0777', true);
}
if ( ! $this->upload->do_upload($key))
{
$error = array('error' => $this->upload->display_errors());
}
else
{
$data = array('upload_data' => $this->upload->data());
$fileName = $data['upload_data']['file_name'];
$newName = sha1_file("./photo_gallery/$fileName") . "." . pathinfo("./photo_gallery/$fileName", PATHINFO_EXTENSION);
rename("./photo_gallery/$fileName", "$out_dir/$newName");
$$key = "$out_dir/$newName"; //This will assign values for $photo1 and $photo2 with new paths
}
}
$data_to_insert = array(
'input1' => $input1,
'input2' => $input2,
'photo1' => $photo1, //Updated with new file path
'photo2' => $photo2, //Updated with new file path
);
//pass variable $data_to_insert in model function that implements following
$success = $this->db->insert('my_table', $data_to_insert);
return $this->db->insert_id();
Hi you need to have this
view.php
<?= form_open_multipart('upload/do_upload')?>
<?= form_upload('userfile')?>
<?= form_close()?>
upload.php
function do_upload(){
$name = $_FILES["file"]["name"];
$ext = end((explode(".", $name))); # extra () to prevent notice
$config['upload_path'] = './uploads/';
$config['allowed_types'] = 'gif|jpg|png';
$config['max_size'] = 0;
$this->load->library('upload', $config);
if( ! $this->upload->do_upload()){
$error = array('error' => $this->upload->display_errors());
$this->load->view('upload_form', $error);
}
else{
$upload_data = $this->upload->data();
#you can choose from
/*
Array(
[file_name] => mypic.jpg
[file_type] => image/jpeg
[file_path] => /path/to/your/upload/
[full_path] => /path/to/your/upload/jpg.jpg
[raw_name] => mypic
[orig_name] => mypic.jpg
[client_name] => mypic.jpg
[file_ext] => .jpg
[file_size] => 22.2
[is_image] => 1
[image_width] => 800
[image_height] => 600
[image_type] => jpeg
[image_size_str] => width="800" height="200"
)
*/
$this->model->insert_data($upoad_data['file_name'], $upoad_data['full_path']);
$data = array('upload_data' => $this->upload->data());
$this->load->view('upload_success', $data);
}
}
model.php
function insert_data($name, $path_name){
$data = array(
'name' => $name,
'path' => $path_name
);
$this->db->insert('table', $data);
return $this->db->insert_id();
}
With that, you upload your file, then get the data about the upload and insert it in db