2013-04-04 2 views
1

Так что я продолжаю получать ошибку, говоря, что я не выбрал файл для загрузки. Я последовал примеру сайта codeigniter и искал множество тем без успеха. PLease помогите мне определить, что мне не хватает или что-то не так. Это просто простая загрузка xml, которая похожа на пару kb.потянув мои волосы на codeigniter upload

Контроллер:

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

class upload extends CI_Controller{ 

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

    function index(){ 

     $this->load->view("uploadPage", array('error'=>'')); 

    } 

    function theUpload(){ 
     echo "uploading"; 
     $config['upload_path'] = "./uploads/"; 
     $this->load->library('upload', $config); 

     if(!$this->upload->do_upload('userfile')){ 
      $error=array('error'=>$this->upload->display_errors()); 
      $this->load->view("uploadPage", $error); 
      echo "no upload"; 
     } else{ 
      echo "file uploaded"; 

     } 
    }  
} 
?> 

HTML-:

<body> 

    <?php echo $error;?> 
    <?php echo form_open_multipart('upload/theUpload');?> 
    <input type="file" name="userfile" id="userfile"/> 
    <input type="submit" name="submit" value="Upload File"> 
    </form> 
</body> 

Если это помогает, вот мой Htaccess

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase /kayokee/ci/ 
#Additionally this will allow you to create a System.php controller, 
#previously this would not have been possible. 
#’system’ can be replaced if you have renamed your system folder. 
RewriteCond %{REQUEST_URI} ^system.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

#When your application folder isn’t in the system folder 
#This snippet prevents user access to the application folder 
#Submitted by: Fabdrol 
#Rename ’application’ to your applications folder name. 
RewriteCond %{REQUEST_URI} ^application.* 
RewriteRule ^(.*)$ /index.php?/$1 [L] 

#Checks to see if the user is attempting to access a valid file, 
#such as an image or css document, if this isn’t true it sends the 
#request to index.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ index.php?/$1 [L] 
</IfModule> 

<IfModule !mod_rewrite.c> 
# If we don’t have mod_rewrite installed, all 404′s 
# can be sent to index.php, and everything works as normal. 
# Submitted by: ElliotHaughin 

ErrorDocument 404 /index.php 
</IfModule> 
+0

Я не уверен, что это требование, но я бы попробовал установить '$ config ['allowed_types'] = 'xml'; . Вы делаете что-нибудь в своем .htaccess, чтобы добавить конечную косую черту к URL-адресам? Это, как известно, прикручивает загрузку файлов. – Jeemusu

+0

(вздох) нет, он все еще говорит, что я не выбрал файл :( –

+0

Я только что скопировал ваш код в свой кодигнитор, и все получилось отлично. Я бы удалил все ваши эхо-вызовы, поскольку они могли бы закручивать вещи. , после строки 'if (! $ this-> upload-> do_upload ('userfile')) {' попробуйте добавить этот код 'print_r ($ _ FILES);' и сообщить нам, что это за результат. – Jeemusu

ответ

0

Почему бы вам не попробовать следующее:

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

class Upload extends CI_Controller{ 

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

    function index(){ 

     $this->load->view("uploadPage", array('error'=>'')); 

    } 

    function theUpload(){ 
     echo "uploading"; 
     $config['upload_path'] = "./uploads/"; 
     $this->load->library('upload', $config); 
     $filedata = array(  
      'userfile_name' => $_FILES['userfile']['name'], 
      'userfile_size' => $_FILES['userfile']['size'] 
     ); 
     if(!$this->upload->do_upload($filedata)){ 
      $error=array('error'=>$this->upload->display_errors()); 
      $this->load->view("uploadPage", $error); 
      echo "no upload"; 
     } else{ 
      echo "file uploaded"; 

     } 
    }  
} 
?> 

Убедитесь, что файл пользователя - это имя ввода типа файла, которое у вас есть в вашем HTML!

+0

Это дает мне ошибку 500. Это был массив $ t() fig, я переключил его обратно на $ config, и это получилось отлично. материал $ filedata дает мне ошибку, в нем говорится: «Сообщение: неопределенный индекс: пользовательский файл» –

0

Имя класса контроллера, загружаемое первым словом, должно быть капиталом, например Upload. Папка должна быть доступна для записи, и путь может быть абсолютным или относительным. class Upload extends CI_Controller

Смежные вопросы