2012-05-08 2 views
0

Я пытаюсь загрузить один файл в CodeIgniter 2.0.2 обычным способом. Функция do_upload() возвращает true, но файл не отображается в каталоге. Разрешения для каталога отображаются в порядке (после запуска другой диагностики, не показанной в коде ниже), поэтому нет смысла, что файл не отображается в каталоге загрузки. Вот код контроллера и просмотра, адаптированный прямо из документов CI.Загрузка файла CodeIgniter черная дыра

Контроллер:

function do_upload_sql(){ 
    // create directory 
    if (! is_dir(BACKUP_DIR)) { 
     mkdir(BACKUP_DIR, 0777); 
    } 
    // or if it exists and has restricted file permissions, change them 
    elseif(fileperms(BACKUP_DIR)!=0777){ 
     chmod(BACKUP_DIR, 0777); 
    } 

    $config['upload_path'] = BACKUP_DIR; 
    $config['allowed_types'] = 'backup'; // an SQL backup file type 
    $config['overwrite'] = TRUE; 
    $this->load->library('upload', $config); 
    //$this->upload->initialize($config); //redundant, so commenting out 
    if (! $this->upload->do_upload()) 
    { 
     $data['action'] = 'c_backup_restore/do_upload_sql'; 
     $tab_error = array('error' => $this->upload->display_errors()); 
     $data['error'] = $tab_error['error']; 
     $this->load->view('common/header'); 
     $this->load->view('v_upload_sql', $data); 
    } 
    else 
    { 
     echo "success"; // yes it's getting here, but i get no file! 
     $data = array('upload_data' => $this->upload->data()); 
     $file_upload = $data["upload_data"]; 
     $this->restore_backup($file_upload); // go do something useful with the file 
    } 
} 

Вид:

<p>Select the backup file</p> 
<div class="not_success"><?php echo $error;?></div> 
<?php echo form_open_multipart($action);?> 
<input type="file" name="userfile" size="30" /> 
<input type="submit" value="Upload" /> 
</form> 
+0

Какие ошибки вы получаете? Где вы определяете 'BACKUP_DIR'? Вы загружаете файлы типа '.backup'? '$ config ['allowed_types']' вероятно, должен быть 'sql | bkup | gz' или что-то в этом роде, если вы загружаете резервные копии SQL. – Seabass

+0

@ Zenbait У меня нет никаких ошибок, но я также не получаю файл, загруженный на сервер. Вот почему это странно. 'BACKUP_DIR' определяется в' application/config/constants.php'. Да, я загружаю файлы '.backup'. Я попробовал это с '$ config ['allowed_types'] = '*'' и получил то же поведение. –

+0

Hm. Включите ведение журнала ('$ config ['log_threshold'] = 4' в config.php) и посмотрите, какие сообщения/ошибки сброшены CI, когда вы пытаетесь загрузить что-то. Что возвращает '$ this-> upload-> data()'? Что возвращает '$ this-> upload-> do_upload()'? – Seabass

ответ

0

Я нашел ошибку с помощью xDebug profiler. Оказалось, что проблема с нативной php-функцией chdir(path) была ниже. @ Ссылка qwertzman на paths in CI может оказаться полезной для определения того, почему происходит зависание.

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