无法在codeigniter中将图像上传到数据库

时间:2016-11-28 20:47:57

标签: php mysql codeigniter

我在Google上尝试了几乎所有的论坛,但无法找到解决方案 对于这个问题,我有一个产品上传表格,有两个上传 图像选项,但我似乎无法上传任何图像 数据库,我都无法使上传路径方法正常工作。帮我 出来请。将图像上传到db的最佳方法是什么?

**Controller File**
    <?php 

        class Admin extends CI_Controller{

            function __construct(){
                parent::__construct();
                $this->load->model('admin_model');
            }


            public function index(){
                $data['cats'] = $this->admin_model->get_cats();
                $data['brands'] = $this->admin_model->get_brands();
                $this->load->view('admin_view', $data, $data);

                $data['upload_data'] = $this->upload->data();
                $image = base_url("uploads/". $data['raw_name'] . $data['file_ext']);
                $_POST['product_img1'] = $image;
                //$image_url = $this->upload->data('full_path');

                $product = array(
                'product_name'  => $this->input->post('name'),
                'brand_id'      => $this->input->post('brands'),
                'cat_id'        => $this->input->post('catagories'),
                'product_price' => $this->input->post('price'),
                'product_desc'  => $this->input->post('desc'),
                'product_img1'  => $this->input->post('img')
                );
                //$insert_id = $this->admin_model->form_insert($product);


                /**
                $config = array(
                'upload_path' => "./images/",
                'allowed_types' => "gif|jpg|png|jpeg",
                'overwrite' => true
                ); 

                $this->load->library('upload', $config);

                $data = $this->upload->data();
                $image = base_url("./uploads/". $data['raw_name'] . $data['file_ext']);
                $_POST['image'] = $image; 
                $this->load->model('admin_model');
                **/
                //if (!empty($_POST)) {
                    // Loading model
                    //$this->upload->do_upload();
                    //$data = array('product_img1' => $this->upload->data());
                    //$file_data = $this->upload->data();
                    //$data['product_img1'] = base_url().'/uploads/'.$file_data['file_name'];



                        //$product_img1 = $_FILES['product_img1']['name'];
                        //$product_img2 = $_FILES['product_img2']['name'];

                        //$temp_name1 = $_FILES['product_img1']['tmp_name'];
                        //$temp_name2 = $_FILES['product_img2']['tmp_name'];

                        //m_checkstatus(conn,       identifier)ove_uploaded_file($temp_name1, "uploads/$product_img1");
                        //move_uploaded_file($temp_name2, "uploads/$product_img2");

                    //$this->admin_model->insert($data);    


                    // Calling model
                    //$id = $this->admin_model->form_insert($data);  
                    //}
     }
    }
    ?>
    **Model File**
    <?php
    class admin_model extends CI_Model{
    function __construct() {
    parent::__construct();
    }
            function form_insert($product){
            // Inserting in Table(students) of Database(college)
            $insert = $this->db->insert('products', $product);
            return $insert;
            }

        function get_cats(){
            $this->db->select("*");
            $this->db->from("catagories");
            $query = $this->db->get();
            return $query->result_array();
            }

        function get_brands(){
            $this->db->select("*");
            $this->db->from("brands");
            $query = $this->db->get();
            return $query->result_array();
            }

        }
    ?>

2 个答案:

答案 0 :(得分:0)

此问题已经回答here

  模型中的

$ this-&gt; input-&gt; post('img')无法检索图像信息。因为图像存储在$ _FILES中而不是$ _POST中。因此,您需要在codeignitor中使用上传库,如下所示。

另外,请确保您的表单包含enctype =“multipart / form-data”attr,并且数据库中的列类型为 blob

答案 1 :(得分:0)

我会举个例子。这是控制器部分。

public function add()
{       

        if (empty($_FILES['image']['name']))
             {$this->session->set_flashdata('yes', 'Please Upload an image');
                redirect($_SERVER['HTTP_REFERER']);
             }
        else
            {
                $target_dir = "images/products/";
                $target_file = $target_dir . time().basename($_FILES["image"]["name"]);
                $imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
                $imgName = time().basename($_FILES["image"]["name"]);
    move_uploaded_file($_FILES["image"]["tmp_name"],$target_file);
$this->adminmodel->addproducts($imgName);
}
}

模型部分

public function addproducts($imgName)
    {   
        $data = array(
                'name'              => $this->input->post('name'),
                'category'      => $this->input->post('category'),

                'image'             => $imgName

                    );
        $this->db->insert('products', $data);
        $this->session->set_flashdata('yes', 'Product added successfully');
        redirect('admin/products/productlist');
    }

查看部分(表格)

  

form role =&#34; form&#34;行动=&#34;管理/产品/添加&#34;方法=&#34;后&#34; ENCTYPE =&#34;多部分/格式数据&#34; ID =&#34;接触型&#34;&GT;

     

您的表单应包含enctype =&#34; multipart / form-data&#34;