image upload and save path in database using codeigniter

前端 未结 2 723
一个人的身影
一个人的身影 2021-01-27 21:54

i did not get image upload and save image path in database My table name is uploadimage and controller name is upload.php

         


        
相关标签:
2条回答
  • 2021-01-27 22:32

    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();
    
    0 讨论(0)
  • 2021-01-27 22:44

    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

    0 讨论(0)
提交回复
热议问题