如何在数据库CI中上传照片

时间:2017-10-31 10:22:53

标签: php sql codeigniter

我对如何在数据库CI中上传照片有疑问,之前,我已经完成了搜索上传照片的方式,但没有成功。

这是控制器

 tambah_aksi()
{


    $this->load->library('upload');
    $nmfile = "".time(); //nama file saya beri nama langsung dan diikuti fungsi time
    $config['upload_path'] = './assets/barang/uploads/'; //path folder
    $config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
    $config['max_size'] = '3072'; //maksimum besar file 3M
    $config['max_width']  = '5000'; //lebar maksimum 5000 px
    $config['max_height']  = '5000'; //tinggi maksimu 5000 px
    $config['file_name'] = $nmfile; //nama yang terupload nantinya

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

    if($_FILES['filefoto']['name'])
    {
        if ($this->upload->do_upload('filefoto'))
        {
            $gbr = $this->upload->data();
            $data = array(           
            'id_barang'         => $this->input->post('id_barang'),
            'nama_barang'       => $this->input->post('nama_barang'),
            'stock_barang'      => $this->input->post('stock_barang'),
            'harga_barang'      => $this->input->post('harga_barang'),
            'ukuran_barang'     => $this->input->post('ukuran_barang'),
            'gambar'            => $gbr['file_name']   
            );
            $this->barang_model->tambah_data($data); //akses model untuk menyimpan ke database

            //pesan yang muncul jika berhasil diupload pada session flashdata
            $this->session->set_flashdata("pesan", "<div class=\"col-md-12\"><div class=\"alert alert-success\" id=\"alert\">Insert data berhasil !!</div></div>");
            redirect('barang'); //jika berhasil maka akan ditampilkan view upload
        }else{
            //pesan yang muncul jika terdapat error dimasukkan pada session flashdata
            $this->session->set_flashdata("pesan", "<div class=\"col-md-12\"><div class=\"alert alert-danger\" id=\"alert\">Insert data gagal !!</div></div>");
            redirect('barang/tambah'); //jika gagal maka akan ditampilkan form upload
        }
    }

5 个答案:

答案 0 :(得分:0)

你可以使用$ this-&gt; upload-&gt; display_errors()显示错误

答案 1 :(得分:0)

$nmfile = "file".time().".png"; //nama file saya beri nama langsung dan diikuti fungsi time
$config['upload_path'] = '/uploads/'; //path folder
$config['allowed_types'] = 'gif|jpg|png|jpeg|bmp'; //type yang dapat diakses bisa anda sesuaikan
$config['max_size'] = '3072'; //maksimum besar file 3M
$config['max_width']  = '5000'; //lebar maksimum 5000 px
$config['max_height']  = '5000'; //tinggi maksimu 5000 px
$config['file_name'] = $nmfile;

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

if ($this->upload->do_upload())
    {
        $gbr = $this->upload->data();
        echo "<pre>";
        print_r($gbr);
        echo exit;

然后检查上传目录。

答案 2 :(得分:0)

第一步 - 创建视图 首先设置Codeigniter base_url()功能,然后转到应用程序&gt;&gt;视图文件夹。在Codeigniter 3的views文件夹中,您可以看到文件 - welcome_message.php ,编辑此文件和创建图像上载表单。您还可以复制并粘贴以下代码以创建图像上传表单。

<html>
<head>
  <title>Upload Image Form</title>
</head>
<body>
<?php echo form_open_multipart('Welcome/image_upload/' , array('id' => 'img'));?>
  <h3>Image Upload Form</h3>
  <input type="file" name="pic" tabindex="2" required>
  <input type="text" name="alt" placeholder="Image Alt Text" tabindex="1" required>
  <button type="submit" id="img-submit" data-submit="Sending">Submit</button>
</form>
</body>
</html>

您还可以添加一些CSS代码来设计表单。

第二步 - 创建数据库和图像上传文件夹 现在在项目中创建一个文件夹,在其中上传图像并在phpmyadmin的项目数据库中创建一个表 - “image_upload”,你也可以复制并粘贴下面的代码来创建一个表:

CREATE TABLE `image_upload` (
`image_url` VARCHAR( 50 ) NOT NULL ,
`alt` VARCHAR( 50 ) NOT NULL 
) ENGINE = MYISAM ;

第三步 - 控制器: 现在转到应用程序&gt;&gt; Controller,会有一个名为'Welcome.php'的PHP文件。首先,您需要添加表单和URL帮助程序并加载数据库,如下所示:

public function __construct()
{
  parent::__construct();
  $this->load->database();
  $this->load->helper('url');
  $this->load->helper('form');
}

现在在控制器中创建一个图像上传功能,如下所示:

function do_upload()
{
  $url = "../images";
  $image=basename($_FILES['pic']['name']);
  $image=str_replace(' ','|',$image);
  $type = explode(".",$image);
  $type = $type[count($type)-1];
  if (in_array($type,array('jpg','jpeg','png','gif')))
  {
    $tmppath="images/".uniqid(rand()).".".$type; // uniqid(rand()) function generates unique random number.
    if(is_uploaded_file($_FILES["pic"]["tmp_name"]))
    {
      move_uploaded_file($_FILES['pic']['tmp_name'],$tmppath);
      return $tmppath; // returns the url of uploaded image.
    }
  }
  else
  {
    redirect(base_url() . 'index.php/Welcome/not_img', 'refresh');// redirect to show file type not support message
  }
}

函数do_upload正在将所选图片从 welcome_message.php 的形式上传到您在Step-II中创建的文件夹中并返回图片网址。

现在我们将上传图像的URL保存到MySQL数据库中。参见下面的代码:

function image_upload()
{
  $data ['image_url']= $this->do_upload();
  $data ['alt']= $this->input->post('alt');
  $this->db->insert('image_upload', $data);
  redirect(base_url() . 'index.php/Welcome/', 'refresh');// Redirect to Success page
}

函数image_upload会将图片网址保存在您的数据库中。您可以使用以下代码查看上传的图片:

<?php
  $images = $this->db->get('image_upload')->result_array();
  foreach($images as $row):
?>
  <img src="<?php echo base_url().$row['image_url'];?>" class="img" alt="" />
<?
  endforeach;
?>

所以这些是使用Codeigniter 3上传图像并保存在MySQL数据库中的简单步骤。

答案 3 :(得分:0)

使用$ this-&gt; upload-&gt; display_errors()

答案 4 :(得分:0)

  1. 首先在views目录中创建一个视图并添加一个表单。

    查看文件

    <!DOCTYPE html>
    
    <html>
    
     <head>
    
     <title>Codeigniter Upload Example</title>
    
      </head>
    
     <body>
    
    <?php echo $error; ?>
    
     <h3>Upload Example</h3>
    
     <?php echo form_open_multipart('upload/upload_file'); ?>
    
      <input type="file" name="userfile" size="20" />
    
       <br /><br />
    
       <input type="submit" value="upload" />
    
         </form>
    
        </body>
    

  2. 创建文件夹以存储上传的文件,例如(照片

  3. 下一步创建一个控制器,如下所示:

  4. 上传控制器

     class Upload extends CI_Controller {
    
            public function __construct()
            {
                parent::__construct();
                $this->load->helper(array('form', 'url'));
                $this->load->library('form_validation');
            }
    
            public function index()
            {
                $this->load->view('upload', array('error' => ' ' ));
            }
    
            public function upload_file()
            {
                    $config['upload_path']          = './photos/';
                    $config['allowed_types']        = 'gif|jpg|png|pdf|doc';
                    $config['max_size']             = 100;
                    $config['max_width']            = 1024;
                    $config['max_height']           = 768;
    
                    $this->load->library('upload', $config);
    
                    if ( ! $this->upload->do_upload('userfile'))
                    {
    
                        $this->form_validation->set_error_delimiters('<p class="error">', '</p>');
    
                        $error = array('error' => $this->upload->display_errors());
    
                        $this->load->view('upload', $error);
                    }
                    else
                    {
                        $data = array('upload_data' => $this->upload->data());
    
                        $this->load->view('someview', $data);
                    }
            }
    }
    

    查看上传的文件信息。

    将图像上传到某个目录后,您可以创建另一个视图文件并分配上传的数据,并可以使用文件信息。

    <?php foreach ($upload_data as $item => $value): ?>
    
    <p><?php echo $item;?>: <?php echo $value;?></p>
    
    <?php endforeach; ?>
    

    上传的文件

      <img src="<?php echo base_url().'/uploads/'.$upload_data['file_name']; ?>" />
    

    保存到数据库

    您可以使用上面的图像信息并传递,图像名称,路径和相关信息进行查询

    希望此代码可以帮助您。您可以在此处找到有关如何使用codeigniter上传文件的详细教程。 Codeigniter file upload example