2016-11-28 21 views
0

私はほとんどすべてのフォーラムをgoogleで試しましたが、解決策が見つかりません。 この問題には、アップロードする製品が2つあります。 画像オプションもありますが データベースに画像をアップロードしているように見えることはできません。どちらのアップロード方法も動作しません。お手数ですが お願いします。 dbに画像をアップロードする最良の方法は何ですか?codeigniterで画像をアップロードすることはできません

**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(); 
      } 

     } 
    ?> 
+0

[codeigniterのMySQLデータベースブロブへの画像アップロード]の可能な複製(http://stackoverflow.com/questions/28621271/image-upload-to-mysql-database-blob-in-codeigniter) –

答えて

0

この質問はすでにモデルでhere

ます$ this->入力 - >ポスト( 'IMG')は、画像情報を取得するために動作しません答えました。イメージは$ _POSTではなく$ _FILESに格納されているためです。したがって、以下のようにcodeignitorでアップロードライブラリを使用する必要があります。

また、フォームがにenctype = "multipart/form-データ" のattrが含まれており、列タイプがデータベースにブロブであることを確認してください。

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'); 
    } 

ビューセクション(フォーム)

形役割= "フォーム" アクション= "管理者/製品/追加" メソッド= "ポスト" のenctype =」

フォームには、enctype = "multipart/form-data"が含まれている必要があります。

関連する問題