codeigniter загрузка фотографий отправить - PullRequest
0 голосов
/ 24 февраля 2012

Мой HTML:

<?php echo form_open_multipart(base_url() . 'user/' . $this->session->userdata['username'] . '/settings/picture'); ?>
    <input type="file" name="photo_data" id="photo_data" value="" />
    <input type="submit" value="Save" name="submit" class="button_ui fr" />
<?php form_close(); ?>

Таким образом, пользователь переходит на свою страницу настроек и щелкает вкладку «Изображение» в меню, которое затем показывает приведенный выше HTML-код и позволяет пользователю обновить изображение.

Затем я вошел в свой user controller и попытался проверить, находится ли пользователь на вкладке рисунков, и распечатать отправляемые данные, чтобы я мог продолжить кодирование остальной части ... но дело в том, что он не печатает картинку, которую я выбираю для загрузки ...

Код моего контроллера:

if ($this->uri->segment(4) == 'picture'){
    if (isset($_POST["submit"])){
        print_r($_POST);
    }
}

Выход:

Array ( [submit] => Save Changes ) 

1 Ответ

1 голос
/ 24 февраля 2012

Как указал The Maniac, загружаемые файлы хранятся в глобальном $ _FILES, а не в $ _POST.Но вам даже не нужно использовать их с CodeIgniter (если вы загружаете один файл).В вашем контроллере вы можете использовать встроенный класс загрузки файлов CI:

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);

    // Automatically finds your user's file in $_FILES
    if ( ! $this->upload->do_upload())
    {
        $error = array('error' => $this->upload->display_errors());
        $this->load->view('upload_form', $error);
    }
    else
    {
        $data = array('upload_data' => $this->upload->data());
        $this->load->view('upload_success', $data);
    }
}

Если вы загружаете несколько файлов, вам нужно сделать цикл foreach с $ _FILES.Узнайте больше об этом в их документации .Кроме того, вы можете минимизировать свой код с помощью чего-то вроде:

<?php 
   echo form_open_multipart('user/'.$this->session->userdata['username'].'/settings/picture'); ?>
   echo form_upload(array('name'=>'photo_data','id'=>'photo_data'));
   echo form_submit('submit','Save');
   echo form_close(); 
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...