2017-10-13 21 views
0

我想在我的项目中使用https://www.verot.net/php_class_upload_download.htm库来调整图像大小。然而,当我提交的形式,它给这个错误无法在CodeIgniter 3中使用自定义库

enter image description here

我已经加载库中自动加载和我改名库“my_upload”并给出了相同的类名。

enter image description here

不过,我不知道为什么会发生错误。

这里是我的控制器:

<?php 
    class Blog extends CI_Controller{ 

     function __construct() { 
      parent::__construct(); 
     } 


     public function add() { 

      if(!$this->session->userdata('logged_in')) { 
       $this->session->set_flashdata('not_loggedin','<div class="alert alert-success text-center">Please Login</div>'); 
       redirect('login'); 
      } 
      $data['title'] = 'Ədd nyus'; 


      $data['author'] = $this->Blog_model->get_author(); 
      $data['category'] = $this->Blog_model->get_category(); 

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

     public function create() { 

      if(!$this->session->userdata('logged_in')) { 
       $this->session->set_flashdata('not_loggedin','<div class="alert alert-success text-center">Please Login</div>'); 
       redirect('login'); 
      } 

      //insert image  

      $now = date("YmdHis"); 
      $this->my_upload->upload($_FILES["userfile"]); 
      if ($this->my_upload->uploaded == true ) { 
       $this->my_upload->allowed    = array('jpg|png'); 
       $this->my_upload->file_new_name_body = 'image_resized' . $now; 
       $this->my_upload->image_resize   = true; 
       $this->my_upload->image_ratio_fill  = true; 
       $this->my_upload->image_x    = 360; 
       $this->my_upload->image_y    = 236; 
       // $this->my_upload->image_ratio_y   = true; 
       $this->my_upload->process('C:\xampp\htdocs\edu-center\assets\img\blog'); 
       if ($this->my_upload->processed == true) { 
       $this->my_upload->clean(); 
       $post_image = $_FILES["userfile"]["name"]; 
       } 
      } else { 
       $post_image = ''; 
      } 

      //insert the user registration details into database 
      $randnum = mt_rand(100000,999999); 
      $slugtitle = mb_strtolower($this->input->post('title_az'), 'UTF-8') . '-' .$randnum; 
      $slug = url_title($slugtitle); 

      $post_image = str_replace(' ', '_', $post_image); 
      $post_image = preg_replace('/_+/', '_', $post_image); 

      date_default_timezone_set('Asia/Baku'); 
      $data = array(
       'title_az' => strip_tags($this->input->post('title_az')), 
       'title_rus' => strip_tags($this->input->post('title_rus')), 
       'author_id' => $this->input->post('author_id'), 
       'category_id' => strip_tags($this->input->post('category')), 
       'body_az' => $this->input->post('body_az'), 
       'body_rus' => $this->input->post('body_rus'), 
       'date' => date("d-m-Y"), 
       'news_slug' => $slug, 
       'img' => $post_image 
      ); 

     $this->Blog_model->add_news($data); 

     $this->session->set_flashdata('changed_msg','<div class="alert alert-success text-center">Ваши изменения были сохранены!</div>'); 
     redirect('blog'); 
    } 

哪里是什么问题?

+0

您可能忽略'()''$这个 - > my_upload->上传()'和'$ this-> my_upload-> processed()' – user4419336

+0

@ wolfgang1983同样的错误:( –

+0

只是指出你已经加倍了'$ this-> my_upload-> uploaded'这 – user4419336

回答

1

恕我直言,最好的方法是创建一个第三方库为 复制你的类到该文件夹​​application/third_party/upload/

,并在你的控制器,你只需inlcude此文件,如:

require_once(APPPATH."third_party/upload/my_upload.php"); 
$objUpload = new my_upload($_FILES); 

如果你真的想要一个库试试以下内容:

问题是你的库被CI实例化 - 你没有真正控制构造函数

您可以做的唯一方法是包含一个“包装”库

<?php 

require_once(APPPATH."libraries/my_upload.php"); 

class Uploadwrapper_library 
{ 
    public function get($files) 
    { 
     return new my_upload($files); 
    } 
} 
在您的控制器

你可以做

$this->load->library("uploadwrapper_library"); 
$objMyUpload = $this->uploadwrapper_library->get($_FILES); 
+0

这意味着如果我使用第一个你应该使用'$ objUpload->'而不是'$ this-> my_upload->'? –

+0

是的 - 那就是正确的 – sintakonte

+0

它会将数据插入到数据库中,但是除了img名称之外,它会抛出这些错误。 ://imgur.com/a/x7G6I –

0

那么,如果你看一下这个文件 - 系统/库/ upload.php的它的构造函数需要一个参数...

public function __construct($config = array()) 

所以你的MY_Upload类是CI的方式,可以让你覆盖核心类,你需要按照你正在扩展的类来进行。

你无法看到您的构造函数,所以我不知道你已经尝试用你的构造是什么?

+0

我没有在my_upload.php构造函数 –

+0

这可能有帮助... https://stackoverflow.com/questions/24070590/codeigniter-file-upload-with-verot -upload-类和悬浮窗-JS – TimBrownlaw

相关问题