如何使用 Codeigniter 框架上传图片?

How to upload image with Codeigniter frame work?

我需要有关使用 CodeIgniter 上传图片代码的帮助。请参考我下面的代码

我确实尝试了文件上传 class,但我无法在已创建的代码中使用它来添加新产品。

这是我的表格

<form action="<?php echo base_url().'index.php/admin/Welcome/add_new_product'; ?>" method="POST">
  <section class="content">
    <div class="row">
      <div class="col-md-12">
        <div class="box box-info">
          <div class="box-header">
            <h3 class="box-title">Product description
              <small></small>
            </h3>


            <h1><input type="textarea" name="pd_title" placeholder="Enter Title Here" style="width:100%;"></h1>
          </div>
          <!-- /.box-header -->
          <div class="box-body pad">

                  <textarea id="editor1" name="pd_short_desc" rows="10" cols="80">
                                          This is my textarea to be replaced with CKEditor.
                  </textarea>
                </div>
                  <div class="box-body pad">
                  <label for="Image">Upload Image</label>
                  <input type="file" name="pd_img" value="" style="padding:10px;">
                </div>

                  <div class="box-body pad">
                  <h3 class="box-title">Description to right of Image</h3>
                  <textarea id="editor2" name="pd_info_right" rows="10" cols="80">
                                          This is my textarea to be replaced with CKEditor.
                  </textarea>
                </div>
                  <div class="box-body pad">
                  <h3>Product Complete Description</h3>
                  <textarea id="editor3" name="pd_desc" rows="10" cols="80">
                                          This is my textarea to be replaced with CKEditor.
                  </textarea>
                </div>

                <input type="submit" name="submit" class="btn  btn-info btn-raised ink-reaction">
            </form>

这是我的控制器

public function add_new_product()
    {
        $p = $this->model_one->add_new_product();
        redirect('admin/Welcome/view_products');
    }

这个模型应该在 mysqli 数据库中插入数据 table

public function add_new_product()
{
  $pd_title = $_POST['pd_title'];
  $pd_short_desc = $_POST['pd_short_desc'];
  $pd_image = $_POST['pd_image'];
  $pd_info_right = $_POST['pd_info_right'];
  $pd_desc = $_POST['pd_desc'];

  $sql = $this->db->query("INSERT INTO products (pd_title, pd_short_desc, pd_image, pd_info_right, pd_desc)
  VALUES('$pd_title','$pd_short_desc', '$pd_image','$pd_info_right','$pd_desc')");

  return "yes";
}

提交此表单时,图片需要上传到uploads文件夹,同时插入到mysqli数据库中的产品table。

做一些改变

查看

<form>标签中添加enctype="multipart/form-data"

<form action="<?php echo base_url().'index.php/admin/Welcome/add_new_product'; ?>" method="POST" enctype="multipart/form-data">

控制器

在控制器中获取 POST 个值

public function add_new_product()
{
    $data = array('pd_title' => $_POST['pd_title'], 'pd_short_desc' => $_POST['pd_short_desc'], 'pd_info_right' => $_POST['pd_info_right'], 'pd_desc' => $_POST['pd_desc']);

    $config['upload_path'] = FCPATH.'uploads/'; 
    $config['allowed_types'] = 'gif|jpg|png'; 
    $config['max_size'] = 100; 
    $config['max_width'] = 1024; 
    $config['max_height'] = 768;

    if(isset($_FILES['pd_img']['name'])){
       $this->load->library('upload', $config);
       if(!$this->upload->do_upload('pd_img')){ 
           print_r($this->upload->display_errors());
       }else{
           $data['pd_image'] = $this->upload->data('file_name');
       }
    }

    $this->model_one->add_new_product($data);
    redirect('admin/Welcome/view_products');
}

型号

public function add_new_product($data)
{
    return $this->db->insert('products', $data);
}