如何将文件图像存储到mysql(Codeigniter)

时间:2017-02-02 09:44:19

标签: php mysql sql codeigniter

我尝试使用Codeigniter

将文件图像上传到mysql

这可能是我的上传视图:

<label>Upload File</label>
    <input type="file" class="form-control" name="images">
</div>

我已完成图像名称,描述等。

我尝试将其保存到数据库中,就像普通的输入表格一样。

结果,列“images”不能为null。我用varbinary(3000)

设置了列“images”

我做错了吗?

编辑:

我的控制器:

public function save(){
    $this->gallery_model->save_foto();
    $this->session->set_flashdata('msg','FOTO BERHASIL DI UPLOAD');
    redirect(base_url('gallery'));
}

我的模特

<?php
class Gallery_model extends CI_Model {
      public function __construct() {
        parent::__construct();
      }

  public function save_foto(){
    $data['id']            = date('U');
    $data['nm_foto']       = $this->input->post('nm_foto');
    $data['username']      = $this->input->post('username');
    $data['tanggal']       = date('j F Y');
    $data['images']        = $this->input->post('images');
    $data['deskripsi']     = $this->input->post('deskripsi');
    $this->db->insert( 'gallery', $data );
  }
}

4 个答案:

答案 0 :(得分:0)

您无法直接将图片上传到数据库,插入图片路径

对于上传图片表格,请添加

enctype="multipart/form-data" 

表格。

有关codeigniter中图片上传的更多帮助

Codeigniter Image Upload

答案 1 :(得分:0)

您可以存储图像但不建议使用。

“正确”的方法是将文件存储在服务器上的某个位置,并将URI存储在数据库中。

问题是图像可能非常大,这可能会导致数据库负载过大而这是不必要的。当您处理更大规模的项目时,您可能有多个需要同步的数据库,当您的数据库较大时,您需要不必减慢网络速度。

如果您仍希望将图像存储在数据库中,则可以将其存储为@objc func showMenu() { // ... } 类型。请参阅MySQL documenation

您可以使用以下示例代码

插入它
BLOB

答案 2 :(得分:0)

如果有人遇到错误并且像我一样感到疲倦,可以使用简单的方法和代码将[图片]上传到资源文件夹

在控制器

public function upd_gallery(){
    $file = $this->input->post('img_name').".jpg";
    move_uploaded_file($_FILES['images']['tmp_name'], './wheretosave/etc/etc'.$file);
    redirect( base_url().'gallery');
}

设置应用程序 - &gt; config - &gt;路由

$route['gallery/upload2'] = 'gallery/upd_gallery';

将此视图添加到您的视图中

<?php
    $ff = './where-to-save/etc/'.$this->input->post('img_name').'.jpg';
?>
     <form  action="<?= base_url()?>gallery/upload2" method="post" enctype="multipart/form-data">
       <div class="form-group">
          <input type="text" class="form-control" name="img_name" required="required">
       </div>
       <div class="form-group">
          <input type="file" class="form-control" name="images">
       </div>
       <div class="form-group">
          <button type="submit" class="btn btn-common" value="Update"> Upload</button>
       </div>
     </div>
  </div>

当然,这种方式非常简单。您只需为图像命名并保存即可

答案 3 :(得分:0)

将图像保存在数据库中并不是一种好习惯。您可以使用以下代码在服务器的文件系统上存储文件。

$userfile= $this->input->post('userfile'); //gets image name only

if ($_FILES['userfile']['name'] != '') { //to check if you've selected any file 
    $path = './path/to/folder';
    $config['overwrite'] = FALSE;
    $config['encrypt_name'] = FALSE;
    $config['remove_spaces'] = TRUE;
    $config['upload_path'] = $path;
    $config['allowed_types'] = 'jpg|png|gif|jpeg';
    $config['max_size'] = '0';

    if (!is_dir($config['upload_path'])) 
    die("THE UPLOAD DIRECTORY DOES NOT EXIST");

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

    if (!$this->upload->do_upload('userfile')) {
        return "UPLOAD ERROR ! " . $this->upload->display_errors();
    }
    else {
        $filepath = $this->upload->data();
        $doc_path = $filepath['file_name'];
        return $doc_path;
    }

}