2012-04-04 173 views
-1

我有电脑板baner,当我尝试运行它(运行上传功能http://localhost/010/baner/upload_img),我得到404错误:笨2.1控制器没有找到

The page you requested was not found

这里有什么问题?

控制器:

<?php 
if (!defined('BASEPATH')) 
exit('No direct script access allowed'); 

class Upload_Baner extends CI_Controller { 

    protected $path_img_upload_folder; 
    protected $path_img_thumb_upload_folder; 
    protected $path_url_img_upload_folder; 
    protected $path_url_img_thumb_upload_folder; 

    protected $delete_img_url; 

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

     $this->setPath_img_upload_folder("public/img/promotions/"); 
     $this->setPath_img_thumb_upload_folder("public/img/promotions/thumbnails/"); 

     $this->setDelete_img_url(base_url() . 'upload_baner/deleteImage/'); 

     $this->setPath_url_img_upload_folder(base_url() . "public/img/promotions/"); 
     $this->setPath_url_img_thumb_upload_folder(base_url() . "public/img/promotions/thumbnails/"); 
    } 

    public function upload_img() { 

     //Format the name 
     $name = $_FILES['userfile']['name']; 
     $name = strtr($name, 'ÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃÃà áâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 

     // replace characters other than letters, numbers and . by _ 
     $name = preg_replace('/([^.a-z0-9]+)/i', '_', $name); 

     //Your upload directory, see CI user guide 
     $config['upload_path'] = $this->getPath_img_upload_folder(); 

     $config['allowed_types'] = 'gif|jpg|png|JPG|GIF|PNG'; 
     $config['max_size'] = '1000'; 
     $config['file_name'] = $name; 

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

     if ($this->do_upload()) { 

      //If you want to resize 
      $config['new_image'] = $this->getPath_img_thumb_upload_folder(); 
      $config['image_library'] = 'gd2'; 
      $config['source_image'] = $this->getPath_img_upload_folder() . $name; 
      $config['create_thumb'] = FALSE; 
      $config['maintain_ratio'] = TRUE; 
      $config['width'] = 193; 
      $config['height'] = 94; 

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

      $this->image_lib->resize(); 

      $data = $this->upload->data(); 

      //Get info 
      $info = new stdClass(); 

      $info->name = $name; 
      $info->size = $data['file_size']; 
      $info->type = $data['file_type']; 
      $info->url = $this->getPath_img_upload_folder() . $name; 
      $info->thumbnail_url = $this->getPath_img_thumb_upload_folder() . $name; //I set this to original file since I did not create thumbs. change to thumbnail directory if you do = $upload_path_url .'/thumbs' .$name 
      $info->delete_url = $this->getDelete_img_url() . $name; 
      $info->delete_type = 'DELETE'; 


      //Return JSON data 
      if (IS_AJAX) { //this is why we put this in the constants to pass only json data 
       echo json_encode(array($info)); 
       //this has to be the only the only data returned or you will get an error. 
       //if you don't give this a json array it will give you a Empty file upload result error 
       //it you set this without the if(IS_AJAX)...else... you get ERROR:TRUE (my experience anyway) 
      } else { // so that this will still work if javascript is not enabled 
       $file_data['upload_data'] = $this->upload->data(); 
       echo json_encode(array($info)); 
      } 
     } else { 

      // the display_errors() function wraps error messages in <p> by default and these html chars don't parse in 
      // default view on the forum so either set them to blank, or decide how you want them to display. null is passed. 
      $error = array('error' => $this->upload->display_errors('','')); 

      echo json_encode(array($error)); 
     } 


     } 

    public function do_upload() { 

     if (!$this->upload->do_upload()) { 

      return false; 
     } else { 
      //$data = array('upload_data' => $this->upload->data()); 

      return true; 
     } 
    } 


//Function Delete image 
    public function deleteImage() { 

     //Get the name in the url 
     $file = $this->uri->segment(3); 

     $success = unlink($this->getPath_img_upload_folder() . $file); 
     $success_th = unlink($this->getPath_img_thumb_upload_folder() . $file); 

     //info to see if it is doing what it is supposed to 
     $info = new stdClass(); 
     $info->sucess = $success; 
     $info->path = $this->getPath_url_img_upload_folder() . $file; 
     $info->file = is_file($this->getPath_img_upload_folder() . $file); 
     if (IS_AJAX) {//I don't think it matters if this is set but good for error checking in the console/firebug 
      echo json_encode(array($info)); 
     } else {  //here you will need to decide what you want to show for a successful delete 
      var_dump($file); 
     } 
    } 

    public function get_files() { 

     $this->get_scan_files(); 
    } 

    public function get_scan_files() { 

     $file_name = isset($_REQUEST['file']) ? 
       basename(stripslashes($_REQUEST['file'])) : null; 
     if ($file_name) { 
      $info = $this->get_file_object($file_name); 
     } else { 
      $info = $this->get_file_objects(); 
     } 
     header('Content-type: application/json'); 
     echo json_encode($info); 
    } 

    protected function get_file_object($file_name) { 
     $file_path = $this->getPath_img_upload_folder() . $file_name; 
     if (is_file($file_path) && $file_name[0] !== '.') { 

      $file = new stdClass(); 
      $file->name = $file_name; 
      $file->size = filesize($file_path); 
      $file->url = $this->getPath_url_img_upload_folder() . rawurlencode($file->name); 
      $file->thumbnail_url = $this->getPath_url_img_thumb_upload_folder() . rawurlencode($file->name); 
      //File name in the url to delete 
      $file->delete_url = $this->getDelete_img_url() . rawurlencode($file->name); 
      $file->delete_type = 'DELETE'; 

      return $file; 
     } 
     return null; 
    } 

     protected function get_file_objects() { 
     return array_values(array_filter(array_map(
      array($this, 'get_file_object'), scandir($this->getPath_img_upload_folder()) 
        ))); 
    } 

    public function getPath_img_upload_folder() { 
     return $this->path_img_upload_folder; 
    } 

    public function setPath_img_upload_folder($path_img_upload_folder) { 
     $this->path_img_upload_folder = $path_img_upload_folder; 
    } 

    public function getPath_img_thumb_upload_folder() { 
     return $this->path_img_thumb_upload_folder; 
    } 

    public function setPath_img_thumb_upload_folder($path_img_thumb_upload_folder) { 
     $this->path_img_thumb_upload_folder = $path_img_thumb_upload_folder; 
    } 

    public function getPath_url_img_upload_folder() { 
     return $this->path_url_img_upload_folder; 
    } 

    public function setPath_url_img_upload_folder($path_url_img_upload_folder) { 
     $this->path_url_img_upload_folder = $path_url_img_upload_folder; 
    } 

    public function getPath_url_img_thumb_upload_folder() { 
     return $this->path_url_img_thumb_upload_folder; 
    } 

    public function setPath_url_img_thumb_upload_folder($path_url_img_thumb_upload_folder) { 
     $this->path_url_img_thumb_upload_folder = $path_url_img_thumb_upload_folder; 
    } 

    public function getDelete_img_url() { 
     return $this->delete_img_url; 
    } 

    public function setDelete_img_url($delete_img_url) { 
     $this->delete_img_url = $delete_img_url; 
    } 


} 
+0

使你的类名和文件名'baner'和'baner.php',而不是'Upload_Baner' – safarov 2012-04-04 09:47:32

回答

3

你的控制器名为Upload_Baner所以,除非你有一个路由定义地图瓣儿来upload_Baner这是不行的。此网址是否有效?:

http://localhost/010/upload_Baner/upload_img 

这就是您的当前控制器将映射到没有路线。

+0

这是工作(这将是当大脑被卡在无限循环那些日子之一:d)。谢谢你的帮助:) – Sasha 2012-04-04 09:53:01

+0

当然可以。你能将这个答案标记为正确吗? – davidethell 2012-04-04 09:53:39

+0

3分钟。 – Sasha 2012-04-04 09:56:23