Загрузка файла Codeigniter — не заполняет папку uploads

#php #codeigniter #file-upload #codeigniter-3

#php #codeigniter #загрузка файла #codeigniter-3

Вопрос:

У меня возникают проблемы с использованием file_upload в codeigntier.

Я не получаю никаких данных в свою папку uploads в корне моей папки CI.

Я новичок в этом и только что следовал инструкциям.

Ниже приведен код для моего представления и контроллера

Просмотреть create_ticket.php

 <h2>Create Ticket</h2>
<?php $attributes = array('id'=>'create_form', 'class'=> 'form_horizontal'); ?>

<?php echo validation_errors("<p class='bg-danger'>"); ?>
                        <!-- //controller -->
<?php echo form_open('tickets/create', $attributes);?>  

<div class="form-group">
<?php      
    echo form_label('Title: ');
    $data = array(  

        'class' => 'form-control',
        'name' => 'ticket_title',
        'placeholder' => 'e.g Microsoft Outlook Running Slow',
        'value' => set_value('ticket_title')

    );
    echo form_input($data); 
?>
</div>
<!-- //break -->
<div class="form-group">
<?php      
    echo form_label('Description of Fault: ');
    $data = array(  

        'class' => 'form-control',
        'name' => 'ticket_description',
        'placeholder' => 'Desribe the Fault',
        'value' => set_value('ticket_description')

    );
    echo form_textarea($data);



?>
</div>
<div class="form-group">
          <?php echo form_label('Upload:'); ?>
          <?php
          $data = array(
            'class' => 'input-file',
            'name' => 'file_upload',
            'accept' => 'pdf,jpg,png',
            'type' => 'file' ); ?>
          <?php echo form_input($data); ?>
        </div>


<div class="form-group">
<?php

    $data = array(

        'class' => 'btn btn-primary',
        'name' => 'submit',
        'value' => 'Report Ticket'

        );


     ?>



    <?php echo form_submit($data); ?>



    </div>
    <?php

?>

<?php echo form_close(); ?>
  

Контроллер tickets.php

 public function create(){
        //validation
        $this->form_validation->set_rules('ticket_title', 'ticket title', 'trim|required|min_length[1]');
        $this->form_validation->set_rules('ticket_description', 'ticket description', 'trim|required|min_length[3]');

    if($this->form_validation->run() == FALSE){

        $data['main_view'] = 'tickets/create_ticket';
        $this->load->view('layouts/main', $data);

    }else{


        $data = array(

            'ticket_creator_user_id' =>$this->session->userdata('user_id'),
            'ticket_creator' =>$this->session->userdata('username'),
            'ticket_title' =>$this->input->post('ticket_title'),
            'ticket_description' =>$this->input->post('ticket_description')

        ); 


        if($this->ticket_model->create_ticket($data)){


            //email user to say ticket has been created

        $user = $this->session->userdata('username');
        $email = $this->session->userdata('email');


        $ticket_title = $this->input->post('ticket_title');
        $ticket_id = $this->input->post('ticket_id');
        // $email = $this->user_model->fetch_email();
        $this->load->library('email');
        $this->email->set_newline("rn");

        $this->email->from('xxxxx@xxxxx.com', 'xxxxxx xxxxxx');
        $this->email->to($email);
        $this->email->subject('Helpdesk Account');
        $this->email->message('Hey ');


        $path = $this->config->item('server_root');
        $file = $path . '/helpdesk/attachments/yourInfo.txt';
        $this->email->attach($file);

        if($this->email->send())
        {
            echo 'Your Email was sent';
        }else
        {

            show_error($this->email->print_debuger());


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

            if ( ! $this->upload->do_upload('file_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);
            }    

        }
            redirect("tickets/index");



        }

    }

}
  

Я поместил функцию загрузки файла в и из инструкции it esle, и по-прежнему ничего не загружается в мою папку uploads.

Я в меру своих возможностей следовал документации CodeIgniter для file_upload и многочисленным онлайн-руководствам.

Однако по-прежнему никакой радости.

Любая помощь приветствуется.

Большое спасибо, Марк

Ответ №1:

Кажется, что вы используете обычную форму form_open . Но для загрузки файла вам нужно использовать многостраничную форму open.

Заменить <?php echo form_open('tickets/create', $attributes);?>

с <?php echo form_open_multipart('tickets/create', $attributes);?>

Прочитайте form_open_multipart

Комментарии:

1. Спасибо, Саджи, это исправлено. Ценю помощь!