【问题标题】:how to Upload image in codeigniter, when submitting all the formfields?提交所有表单字段时如何在codeigniter中上传图像?
【发布时间】:2012-12-22 11:52:31
【问题描述】:

我想知道如何在使用 codeigniter 时上传图像并将其名称保存在数据库中, 我为此使用了简单的表单标签,例如,

   <form  action="" name="add" enctype="multipart/form-data" method="post">

   <label for="img">Image: </label> <input type="file" name="image" />

   <label for="title">Title: </label> <input type="text" name="photo_title" value="" />

   <label for="description">Description: </label>
   <textarea name="photo_description">   </textarea>

   <label for="photo_category">Category </label>
     <select name="photo_category">
          <option value="select_one">Please Select..</option>
           <option value="fun">Fun</option>
      </select>
     <input type="submit" value="Add" />

   </form> 

我查看了手册,但无法理解他们在做什么,请任何人帮助我为此创建一个控制器功能,该功能将在数据库中插入所有值并上传图像文件。

谢谢, 沙鲁克

【问题讨论】:

    标签: php html image codeigniter upload


    【解决方案1】:
    public function upload() {
    
        $this->load->library('form_validation');
    
        $this->form_validation->set_rules('photo_title', 'Photo Title', 'required');
        $this->form_validation->set_rules('photo_description', 'Photo Description', 'required');
        $this->form_validation->set_rules('photo_category', 'Photo Category', 'required');
    
        if ($this->form_validation->run() == TRUE) {
    
            $data = array(
                   'photo_title' => $this->form_validation->set_value('photo_title'),
                   'photo_description' => $this->form_validation->set_value('photo_description'),
                   'photo_category' => $this->form_validation->set_value('photo_category'),,
            );
            $this->db->insert('table_name', $data);
    
    
            // Start Upload Picture
            if (!empty($_FILES['image']['name'])) {
                $config['upload_path'] = ''.$_SERVER['DOCUMENT_ROOT'].'/upload_path/';
                $config['allowed_types'] = 'gif|jpg|png';
                $config['max_size'] = '5000';
                $config['max_width']  = '2000';
                $config['max_height']  = '2000';
                $config['encrypt_name'] = TRUE;
                $config['remove_spaces'] = TRUE;
    
                $this->load->library('upload', $config);
    
                if ($this->upload->do_upload('image')) {
    
                    $data = array('upload_data' => $this->upload->data());
                    $data = $this->upload->data();
    
                    $this->db->select('id');
                    $this->db->from('table_name');
                    $this->db->order_by('id', 'DESC');
                    $this->db->limit(1);
                    $query = $this->db->get();
                    $row = $query->row();
    
                    $data1 = array(
                       'shirt' => $data['file_name'],
                    );
                    $this->db->where('id', $row->id);
                    $this->db->update('table_name', $data1);
    
                }
    
            }
    
        };
    
    }
    

    【讨论】:

    • 在上面的答案中,代码结合了控制器逻辑和模型逻辑。理想情况下,您希望将这些拆分并将所有与数据库相关的脚本保存在一个模型中,毕竟它是一个模型-视图-控制器框架。
    • 不想让他变得很复杂。
    • 当然 - 可以理解。只是确保信息在那里供他稍后查看。
    • 谢谢您的回复,但我无法得到它,请任何其他简单的解决方案
    • 我给了你一个简单而完整的表单验证和提交文本字段和你的图像!
    【解决方案2】:

    通过使用

      $this->upload->initialize($config);
    

    而不是

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

    谢谢,

    沙鲁克

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-13
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多