【问题标题】:How to upload image with Codeigniter frame work?如何使用 Codeigniter 框架上传图片?
【发布时间】:2019-05-30 04:50:34
【问题描述】:

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

我确实尝试过 File Upload 类,但我未能在已创建的代码上使用它来添加新产品。

这是我的表格

<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 db表中插入数据

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 db的products表中。

【问题讨论】:

  • 表单页面中缺少此内容
    。还有 public function add_new_product() { $p = $this->model_one->add_new_product();重定向('管理员/欢迎/view_products'); } 是我正在使用的控制器。
  • 请在有问题的地方添加完整的代码。
  • 表单页面中缺少此内容
    。还有 public function add_new_product() { $p = $this->model_one->add_new_product();重定向('管理员/欢迎/view_products'); } 是我正在使用的控制器
  • 上传图片的控制器功能在哪里?在问题而不是评论框中添加代码
  • 很抱歉。刚刚更新了我的问题。请查看。

标签: codeigniter file-upload codeigniter-3 codeigniter-2 image-upload


【解决方案1】:

做一些改变

查看

&lt;form&gt;标签中添加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);
}

【讨论】:

  • if(isset($_FILES['pd_img']['name'])) { //图片上传... $config['upload_path'] = './uploads/'; $config['allowed_types'] = 'gif|jpg|png'; $config['max_size'] = 100; $config['max_width'] = 1024; $config['max_height'] = 768; $this->upload->do_upload('pd_image');不成功,图片正在上传文件夹中上传,但未添加到 sqli db
  • 在控制器 if( !$this-&gt;upload-&gt;do_upload('pd_image')){ print_r($this-&gt;upload_display_errors());} 中尝试此操作以获取任何错误消息
  • 公共函数 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']); if( !$this->upload->do_upload('pd_image')){ print_r($this->upload_display_errors());} $this->model_one->add_new_product($data);重定向('管理员/欢迎/view_product'); } 这是正确的
  • 不成功 - 遇到 PHP 错误 严重性:通知消息:未定义属性:Welcome::$upload 文件名:admin/Welcome.php 行号:211 回溯:文件:D:\xampnew\htdocs \cms\application\controllers\admin\Welcome.php 行:211 函数:_error_handler 文件:D:\xampnew\htdocs\cms\index.php 行:315 函数:require_once
  • 让我完成这个。首先,告诉我项目目录结构是什么?我的意思是目标文件夹?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-09
  • 2020-08-29
  • 1970-01-01
  • 2019-07-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
相关资源
最近更新 更多