Error !!! You did not select the file to upload. Codeigniter

3

I have a problem uploading the image and registering it in my database.

In my database I have a table called tbl_article where there is a when going to the image in question called image_item with a varchar (80):

In the view like this:

<div class="form-group">
    <label class="control-label col-md-1 col-sm-1 col-xs-12">Imagem do artigo</label>
    <div class="col-md-11 col-sm-11 col-xs-12">
    <!-- Vou verificar se existe imagem cadastrada -->

        <?php
        if (property_exists($artigo, 'aritigo_imagem') && $artigo->artigo_imagem != "") {

            echo "<img width='200px' height='200px' src='" . base_url('tema/assets/img/artigo/' . $artigo->artigo_imagem) . "'  title='" . $artigo->artigo_titulo . "' class='img-responsive img-rounded'> ";
            echo '<div id="remover"> <a href="' . base_url("admin/artigo/rimagem/" . $this->uri->segment(4)) . '"> Remover Imagem </a> </div>';
        } else {

            echo '<div class="fileinput fileinput-new" data-provides="fileinput">';
            echo '<div class="fileinput-new thumbnail" data-trigger="fileinput">';
            echo '<img src="' . base_url('tema/assets/img/acao/200x200.png') . '" class="user-image" alt="...">';
            echo '</div>';
            echo '<div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 200px"></div>';
            echo '<div>';
            echo '<span class="btn btn-primary btn-file">';
            echo '<span class="fileinput-new"> <i class="fa fa-file-image-o"></i> Mudar a Imagem </span>';
            echo '<span class="fileinput-exists"> <i class="fa fa-file-image-o"></i> Carregar </span>';
            echo '<input type="file" name="imagem_link" accept="image/*">';
            echo '</span>';
            echo '<a href="#" class="btn btn-danger fileinput-exists" data-dismiss="fileinput"> <i class="fa fa-close"></i> Apagar </a>';
            echo '</div>';
            echo '</div>';
        }
        ?>
    </div>
</div>

My controller looks like this:

public function cadastro() {

    $validacao = self::validar('cadastro');

    if (($validacao == '1') && (!empty($_POST) == '1')) {
        // Configuraçao da Imagem
        $config['upload_path'] = './tema/assets/img/artigo';
        $config['allowed_types'] = 'gif|jpg|png';
        $config['max_size'] = '0';
        $config['max_width'] = '0';
        $config['max_height'] = '0';
        $config['encrypt_name'] = true;
        $this->load->library('upload', $config);

        if (!$this->upload->do_upload('artigo_imagem')) { // Se o Upload de errado
            $this->session->set_flashdata('error', $this->upload->display_errors());
        } else { // Se o Upload de Sucesso
            // Salvamos os dados do form em um array.
            $_data = $this->input->post();
            $_data['artigo_imagem'] = $this->upload->do_upload('file_name');
            // Definimos como padrao o artigo habilitado...
            $_data['artigo_status'] = 0;

            // Pegamos o retorno do cadastro em uma variavel.
            $status = $this->artigo->Inserir($_data);  // Aqui inserir os dados no bd...
            // Se retornar 1 no Status e pq o cadastro foi inserido no bd.

            if ($status) {
                $this->session->set_userdata('success', 'Artigo Cadastrado com Sucesso.');
                redirect('admin/artigo'); // Redirecionamos para o modulo artigo..
            } else { // Se o cadastro retornar 0 e pq deu algum erro e nao redirecionara.
                $this->session->set_userdata('error', 'Erro ao Cadastrar o Artigo.');
            }
        }
    } else { // Aqui e se nao passar pela validaçao do formulario...
        $this->session->set_userdata('error', validation_errors('<p>', '</p>'));
    }

    $dados = array(
        'artigo' => new stdClass(), // retorna um array vazio sem erros
        'titulo' => 'Novo Artigo',
        'titulo_imagem' => $this->artigo->GetAll(false, "artigo_imagem", 'asc'),
        'botao' => 'Cadastrar'
    );

    $this->template->load('admin/tema_admin', 'admin/artigo/artigo_form', $dados); // Template, Views e Dados
}

When I go to upload the image it says according to the validator that I did not select the image that theoretically is not true.

I have other functions like this one, and yet this one is giving this error what it can be?

    
asked by anonymous 11.10.2016 / 14:37

1 answer

3

In your HTML is

<input type="file" name="imagem_link" accept="image/*">

On your controller you are using

!$this->upload->do_upload('artigo_imagem') ,

The name of the input must be equal to the name passed in the argument of the do_upload function. Or rename the input name to "image_item" or change "image-article" to "image_link".

It should be like this then:

!$this->upload->do_upload('imagem_link')

Your form must also have the following enctype attribute. Here is usually the likely error with uploads. I've forgotten that a lot.

<form action="upload.php" method="post" enctype="multipart/form-data">

Bonus

There is no need to write HTML inside the echo command. It gets pretty bad to read and maintain. Try this:

<?php if (property_exists($artigo, 'aritigo_imagem') && $artigo->artigo_imagem != "") { ?>

 <img width='200px' height='200px' src='" . base_url('tema/assets/img/artigo/' . $artigo->artigo_imagem) . "'  title='" . $artigo->artigo_titulo . "' class='img-responsive img-rounded'> 
 <div id="remover"> <a href="' . base_url("admin/artigo/rimagem/" . $this->uri->segment(4)) . '"> Remover Imagem </a> </div>
<?php } else { ?>

  <div class="fileinput fileinput-new" data-provides="fileinput">
        <div class="fileinput-new thumbnail" data-trigger="fileinput">
             <img src="' . base_url('tema/assets/img/acao/200x200.png') . '" class="user-image" alt="...">
        </div>
        <div class="fileinput-preview fileinput-exists thumbnail" style="max-width: 200px; max-height: 200px"></div>
             <div>
                 <span class="btn btn-primary btn-file">
                   <span class="fileinput-new"> <i class="fa fa-file-image-o"></i> Mudar a Imagem </span>
                   <span class="fileinput-exists"> <i class="fa fa-file-image-o"></i> Carregar </span>
                   <input type="file" name="imagem_link" accept="image/*">
                 </span>
                 <a href="#" class="btn btn-danger fileinput-exists" data-dismiss="fileinput"> <i class="fa fa-close"></i> Apagar </a>
            </div>
      </div>                            
<?php } ?>
    
11.10.2016 / 16:08