2016-09-25 79 views
-1

我们正在开发基于CI框架的社交网络项目。我在网上搜索,但感到困惑。如何上传照片,允许用户裁剪照片并使用数据库保存,以便在通话时检索照片?我正在使用这个资料图片。使用Codeigniter进行照片上传,裁剪和保存

在视图:

<?php echo form_open_multipart ('index.php/Main/do_upload'); ?> 
<table class="table"> 
    <tr> 
     <td>Title</td> 
     <td><?php echo form_input('title'); ?></td> 
    </tr> 
    <tr> 
     <td>Image</td> 
     <td><?php echo form_upload('userfile'); ?></td> 
    </tr> 
    <tr> 
     <td></td> 
     <td><?php echo form_submit('submit', 'Save', 'class="btn btn-primary"'); ?></td> 
     <?php echo form_close(); ?> 
    </tr>  
</table> 

在控制器:

public function do_upload() 
{ 
    $config['upload_path']   = './uploads/'; 
    $config['allowed_types']  = 'gif|jpg|png'; 
    $config['max_size']    = 100; 
    $config['max_width']   = 1024; 
    $config['max_height']   = 768; 

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

    if (! $this->upload->do_upload('userfile')) 
    { 
     $error = array('error' => $this->upload->display_errors()); 

     $this->load->view('Material_view', $error); 
    } 
    else 
    { 
     $data = array('upload_data' => $this->upload->data()); 

     $this->load->view('upload_success', $data); 
    } 
} 
+0

你到目前为止尝试过什么。用那个更新你的问题。所以我们将为您提供改进代码的步骤。 –

+0

首先在视图上我使用php表单创建了表单,然后在控制器上创建函数do_upload()。我参考了它,但它没有奏效。 – Aryan

+0

为什么不能提供代码。如果你提供的话,这对于纠正错误权利将是有用的。 –

回答

0

创建图像模型和粘贴代码

<?php 
class Image_model extends CI_Model { 
public function __construct() { 
    parent::__construct(); 
    $this->load->helper('url'); 
    $this->load->library('upload'); 
    $this->load->library('image_lib'); 
} 
public function do_resize($filename) 
{ 

    $source_path = 'uploads/' . $filename; 
    $target_path = 'uploads/thumb/thumb_'.$filename; 

    $config_manip = array(

     'image_library' => 'gd2', 
     'source_image' => $source_path, 
     'new_image' => $target_path, 
     'maintain_ratio' => TRUE, 
     'width' => 150, 
     'height' => 150 
    ); 
    $this->image_lib->initialize($config_manip); 
    $this->load->library('image_lib', $config_manip); 


    if (!$this->image_lib->resize()) { 
     echo $this->image_lib->display_errors(); 
     die(); 
    } 
} 

public function img_upload() 
{ 
    $config = array(
     'upload_path' => "uploads", 
     'allowed_types' => "*", 
     'overwrite' => TRUE, 
     'max_size' => "5048000", // Can be set to particular file size , here it is 2 MB(2048 Kb) 
     'max_height' => "3000", 
     'max_width' => "3000" 
    ); 
    $this->upload->initialize($config); 
    $this->load->library('upload', $config); 

    if($this->upload->do_upload()) { 
     $response = array('upload_data' => $this->upload->data()); 
     $this->do_resize($response['upload_data']['file_name']); 

    } 
    /*else{ 
     $error    = array('error'=>$this->upload->display_errors()); 
     //print_r($error);die(); 

    }*/ 
    } 
} 

调用此函数像这样在你的控制器

<?php if (! defined('BASEPATH')) exit('No direct script access allowed'); 
class Post extends CI_Controller { 
    public function __construct(){ 
    parent::__construct(); 
    $this->load->model('image_model'); 
    } 
    public function add() { 
     if(isset($_FILES)){ 
      $config    = $this->image_model->img_upload(); 
      $file_data    = $this->upload->data(); 
      $data['feature_image'] = $file_data['file_name']; 
      } 
    $lat_id  =  $this->your_model->save($data); 
}