【问题标题】:Image is not uploaded into database codeigniter图像未上传到数据库 codeigniter
【发布时间】:2016-09-05 01:22:47
【问题描述】:

我正在尝试在表单中上传图片。表格中的所有数据都可以存储到接受图像的数据库中。并且图像也没有插入到 upload_path 中。我想当用户填写所有表单信息并上传图像时,用户单击提交按钮,包括图像在内的所有数据都存储到数据库中。我的代码有什么问题?谢谢。

//view.php

<?php echo form_open_multipart('writereview/create');?>
<label for="sitename"><span>Sitename <span class="required">*</span></span><input type="text" class="input-field" name="sitename" value="" /></label>
<input type="file" name="images"  size="20" /> <br />
<label><span>&nbsp;</span><input type="submit" value="Submit" /></label>

//控制器

public function create() //insert data
{
    $data['title'] = 'Write Review'; // Capitalize the first letter 
    $this->load->helper(array('html', 'url', 'form'));

    $this->config_model->writereview();

    $this->load->view('templates/header', $data);
    $this->load->view('writereview/writereview');
    $this->load->view('templates/footer');
}

//模型

public function writereview()
{
    $this->load->helper('url');

    $type = explode('.', $_FILES["pic"]["name"]);
    $type = strtolower($type[count($type)-1]);
    $url = "./assets/images/".uniqid(rand()).'.'.$type;
    if(in_array($type, array("jpg", "jpeg", "gif", "png")))
        if(is_uploaded_file($_FILES["pic"]["tmp_name"]))
            if(move_uploaded_file($_FILES["pic"]["tmp_name"],$url))
                return $url;


    $data = array(
        'sitename' => $this->input->post('sitename'),
        'images'=>$this->input->post('images')
    );
    return $this->db->insert('review', $data);
}

【问题讨论】:

  • 文件名是 name="images" 而你是 $_FILES["pic"] 这是错误的。使用$_FILES["images"]
  • 对不起。它也不起作用..
  • 对于单个上传图像,它工作正常。但是当添加其他表单数据时。它只存储表单数据而不存储图像。

标签: php codeigniter


【解决方案1】:

更改插入数据数组

$data = array(
        'sitename' => $this->input->post('sitename'),
        'images'=>$uploaded_file_name
    );

也改$_FILES["pic"]["name"] to $_FILES["images"]["name"]

没有名为images的发布键,因为输入类型是文件...

这是您的示例的完整代码...

        $image_name ='';
        if (isset($_FILES['images']['tmp_name']) && $_FILES['images']['tmp_name'] != '') 
        {
          $config['upload_path'] = 'assets/images/';
          $config['allowed_types'] = 'gif|jpg|png|jpeg';
          $config['max_size'] = '20000'; // change it to your max file size
          $this->load->library('upload', $config);
          $this->upload->initialize($config);
          if (!$this->upload->do_upload('images')) {//if upload error
            print_r($this->upload->display_errors());//print error
          }else{
            $data = $this->upload->data();
            $image_name = $data['file_name'];
          }
        }
        $data = array(
           'sitename' => $this->input->post('sitename'),
           'images'=>$image_name
        );
        return $this->db->insert('review', $data);

【讨论】:

  • 我改变了,但是当我点击提交按钮时,什么也没有发生。它不会链接到 writereview/create。
  • 我只知道我没有任何库文件调用上传。那么上传库中应该包含哪些内容呢?
  • 它在代码中... $this->load->library('upload', $config);
  • 意味着我不需要任何库文件调用上传?很抱歉,因为我是一名新程序员,也是 codeigniter 的新手..
  • 什么意思?这是 Codeigniter 上传文件和上传库的方式吗?
猜你喜欢
  • 2013-06-28
  • 2015-04-15
  • 1970-01-01
  • 2018-05-09
  • 1970-01-01
  • 1970-01-01
  • 2019-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多