Error while uploading image to Codeigniter

Asked

Viewed 794 times

1

I have a function in PHP to add a thumbnail image as a course cover on my website, regardless of the image having the right requirements, is returned the message:

Thumbnail image exceeds the maximum size of 1MB allowed.

I wonder what’s wrong with the code below:

function usuarios_cursos_miniatura_atualiza()
{
    if ($this->site_model->checa_logado_usuario()) {
        $data = str_replace('"', "'", $_POST);
        $info['list8'] = $this->site_model->checa_logado_usuario();
        $data['usuarios_id_fk'] = $info['list8']['usuarios_id'];
        $data['cedoc_doc_id_fk'] = $this->site_model->dono_curso($data['usuarios_id_fk'], $data['cedoc_doc_id_fk']);
        if ($data['cedoc_doc_id_fk']) {
            if ($_FILES['imagem']['name'] <> NULL) {
                $file_name = $_FILES['imagem']['name'];
                $file_extension = explode(".", $file_name);
                $file_extension = $file_extension[count($file_extension) - 1];
                $file_extension = strtolower($file_extension);
                if (($file_extension == 'jpg') || ($file_extension == 'jpeg') || ($file_extension == 'png') || ($file_extension == 'gif')) {
                    // FAZ UPLOAD DA IMAGEM
                    $config['upload_path'] = './uploads/_images/cedoc_doc_' . $data['cedoc_doc_id_fk'];
                    $config['max_size'] = '1000';
                    $config['max_width'] = '0';
                    $config['max_height'] = '0';
                    $this->load->library('upload', $config);
                    $_FILES['imagem']['name'] = 'img' . $data['cedoc_doc_id_fk'] . '_' . $this->super_model->genRandomString() . '.' . $file_extension;
                    if ($this->upload->do_upload('imagem')) {
                        $file_name = $this->upload->file_name;
                        // REDIMENCIONA
                        $this->load->library('image_lib');
                        $config['source_image'] = $config['upload_path'] . "/$file_name";
                        $config['new_image'] = $config['upload_path'] . "/$file_name";
                        $config['maintain_ratio'] = TRUE;
                        $config['width'] = 800;
                        $config['height'] = 600;
                        $this->image_lib->initialize($config);
                        $this->image_lib->resize();
                        $this->image_lib->clear();
                        // THUMB
                        $this->load->library('image_lib');
                        $config['source_image'] = $config['upload_path'] . "/$file_name";
                        $config['new_image'] = "./uploads/_thumb/cedoc_doc_" . $data['cedoc_doc_id_fk'] . "/" . $file_name;
                        $config['maintain_ratio'] = TRUE;
                        $config['width'] = 800;
                        $config['height'] = 600;
                        $this->image_lib->initialize($config);
                        $this->image_lib->resize();
                        $this->image_lib->clear();
                        unlink("./uploads/_images/cedoc_doc_" . $data['cedoc_doc_id_fk'] . "/" . $file_name);
                        $this->site_model->cursos_imagem_miniatura_upload('cedoc_doc_' . $data['cedoc_doc_id_fk'] . '/' . $file_name, $data['cedoc_doc_id_fk']);
                        $this->site_model->despublica_curso($data['cedoc_doc_id_fk'], $data['usuarios_id_fk']);
                        $this->enviar_email_mensagem('Nova imagem de miniatura no curso ' . $data['nome'], 'O curso ' . $data['nome'] . ' codigo ' . $data['cedoc_doc_id_fk'] . ' recebeu uma nova imagem de miniatura pelo usuario ' . $info['list8']['nome'] . ' cod ' . $info['list8']['usuarios_id'] . '.<br /> Acesse o painel de controle para aprovar ou nao esta atualizacao clicando no link abaixo:<br /><br /> <a href=' . base_url() . 'cursos/cursos_busca/' . $data['cedoc_doc_id_fk'] . '>' . base_url() . 'cursos/cursos_busca/' . $data['cedoc_doc_id_fk'] . '</a>', '[email protected]');
                        redirect('site/usuarios_cursos/' . $data['cedoc_doc_id_fk'] . '/Imagem miniatura do curso atualizada. Seu curso entrou na fila de publicacao. Voce sera informado via e-mail assim que for publicado ');
                    }
                    else {
                        redirect('site/usuarios_cursos/' . $data['cedoc_doc_id_fk'] . '/Imagem de miniatura excede o tamanho maximo de 1MB permitido.');
                    }
                }
                else {
                    redirect('site/usuarios_cursos/' . $data['cedoc_doc_id_fk'] . '/Formato de imagem invalido (somente jpg, jpeg, png ou gif)');
                }
            }
            else {
                redirect('site/area_usuario');
            }
        }
        else {
            redirect('site/area_usuario');
        }
    }
    else {
        redirect('site/area_usuario');
    }
}

View

<?php

include ("site_header.php");
 ?>
    <div align="center" style="margin-top:0px;">
    <div id="info" name="info_frame" allowtransparency="TRUE" style="background-color:transparent;">
    <div class="fundotransp" style="background-color:#eee;padding:10px;margin:10px;margin-top:0px;margin-left:0px;border:2px solid white;">
    <?php
include ("site_meu_usuario_header.php");
 ?>
    <div align="center" class="tarja" style="font-size:18px;margin-top:10px;">Cursos Cadastrados</div>
    <script>
        function redireciona_curso(valor)
        {
        url="<?php
echo base_url(); ?>site/usuarios_cursos/"+valor;
        window.location = url;
        }
        function valida_miniatura(form)
        {
            var alerta = '';
            if (!document.getElementById('imagem').value)
            {
                alerta += '\n - Clique em procurar e selecione uma imagem no seu computador';
                document.getElementById('imagem').style.backgroundColor="#c0c0c0";
            }
            if (alerta=='')
            {
                desativa_botao('botao_confirma');
                return true;
            }
            else
            {
                alert('Campos requeridos: '+alerta);
                return false;
            }
        }   
    </script>
          <?php
$i = 0;
echo '<div align=center class=texto style=padding:10px;>';
if ($list2 != NULL) {
    echo "<span id=resultado_busca>Mostrando de <b>" . ($pagina + 1) . "</b> a <b>";
    if ($pagina + $per_page > $total_rows) {
        echo $total_rows;
    }
    else {
        echo $pagina + $per_page;
    }
    echo "</b> de <b>" . $total_rows . "</b> cursos cadastrados.<br />";
}
echo '</div>';
echo "<div align=center class=texto style=margin-top:10px;margin-bottom:10px;>";
echo "Acesso r&aacute;pido a seus cursos: ";
?>
          <select onChange="redireciona_curso(this.value)" style="width:800px;overflow:hidden;text-align:center;">
            <option value="" selected="selected"></option>
            <?php
foreach($cursos_todos as $cursos) {
?>
            <option value="<?php
    echo $cursos->cedoc_doc_id_fk; ?>" <?php
    if (isset($list2[0])) {
        if ($list2[0]->cedoc_doc_id_fk == $cursos->cedoc_doc_id_fk) {
            echo 'selected';
        }
    } ?>><?php
    echo $cursos->nome; ?> (<?php
    echo $cursos->CCCat; ?> / <?php
    echo $cursos->CCSubCat; ?> <?php
    if ($cursos->CDestaque == 'Sim') {
        echo ' / Destaque';
    } ?> C&oacute;d. <?php
    echo $cursos->cedoc_doc_id_fk; ?>)</option>
            <?php
}
?>
          </select>
          <?php
echo "</div>";
if (isset($list2)) {
    if ($list2 != Null) {
?>

          <div align="left" class="tarja" style="font-size:18px;"> Curso:</div>
          <?php
        echo "<table align=center class=texto>";
        foreach($list2 as $item2) {
            echo "<tr id=$i" . 'tr' . " class=tr_content onmouseover=tr_over($i) onmouseout=tr_out($i)>";
            echo "<td align=center style=width:200px;cursor:pointer;padding:10px;text-align:center;background-color:white;>";
            if (isset($capa[0]->caminho)) {
?>

        <div align="center" style="padding:6px;background-color:f2f2f2;border:1px solid #d9dde2;vertical-align:bottom;width:240px;">
                                                <div>
                                                        <div style="position:relative;">
                                                            <div style="overflow:hidden;width:240px;height:145px;">
                                                               <img src="<?php
                echo base_url(); ?>uploads/_thumb/<?php
                echo $capa[0]->caminho; ?>" width="240px;" align="left" />
                                                            </div>

                                                        </div>
                                                     </div>
                                                 </div>
                                           </div>

                             <?php
            }
            echo form_open_multipart('site/usuarios_cursos_miniatura_atualiza', $form);
?>
                            <div style="margin-bottom:5px;">
                                <input type="file" name="imagem" id="imagem" />
                            </div>
                            <div>
                                <input type="hidden" name="cedoc_doc_id_fk" value="<?php
            echo $item2->cedoc_doc_id_fk; ?>" />
                                <input type="hidden" name="nome" value="<?php
            echo $item2->nome; ?>" />
                                <input type="submit" value="Atualizar Imagem Miniatura" class="botao" id="botao_confirma" onClick='return valida_miniatura(form);'  />
                            </div>
                            </form>
                            <?php
            echo "<div style=font-size:12px;color:#003366;>";
?>
                                <a target="_blank" href="<?php
            echo base_url(); ?>site/arquivos_busca/_/<?php
            echo $item2->CCSubCat; ?>/0000-00-00/0000-00-00">
                                <?php
            echo "$item2->CCCat / $item2->CCSubCat";
?>
                                </a>
                                <?php
            echo "</div>";
            echo "<div style=font-size:10px;color:#666666;>Cadastro em " . date("d/m/Y", strtotime($item2->data_criacao)) . "</div></div></td>";
            echo "<td style=width:500px;cursor:pointer;padding:10px;>";
            echo "<div style=font-size:13px;>C&oacute;d. $item2->cedoc_doc_id_fk</div>";
            echo "<div style=font-weight:bold;font-size:20px;color:#cf0000;margin-bottom:11px;>$item2->nome</div>";
            echo "<div style=line-height:21px;><b>Visualizado </b> " . $item2->CVisitas . " vez";
            if ($item2->CVisitas <> 1) {
                echo 'es';
            }
            echo "</div>";
            echo "<div style=line-height:21px;><b>Carga hor&aacute;ria:</b> " . $item2->carga_horaria . " hora";
            if ($item2->carga_horaria <> 1) {
                echo 's';
            };
            echo "</div><br />";
            if ($item2->publicoalvo) {
                echo "<div style=line-height:21px;><b>P&uacute;blico-alvo:</b> " . strip_tags(substr($item2->publicoalvo, 0, 120)) . " ...</div><br />";
            }
            if ($item2->objetivo) {
                echo "<div style=line-height:21px;><b>Objetivo:</b> " . strip_tags(substr($item2->objetivo, 0, 120)) . " ...</div><br />";
            }
            if ($item2->apresentacao) {
                echo "<div style=line-height:21px;><b>Apresenta&ccedil;&atilde;o:</b> " . strip_tags(substr($item2->apresentacao, 0, 120)) . " ...</div><br />";
            }
            echo "</td>";
            echo "<td style=width:160px;cursor:pointer;>";
?>
                             <div class="site_medium_title" style="padding:5px;padding-bottom:0px;"><a target="_blank" style="color:black;" href="<?php
            echo base_url(); ?>site/arquivo/<?php
            echo $item2->cedoc_doc_id_fk; ?>/<?php
            echo url_title2($item2->CCCat); ?>/<?php
            echo url_title2($item2->CCSubCat); ?>/<?php
            echo url_title($item2->nome); ?>" title="Visualizar <?php
            echo $item2->nome; ?>">- Visualizar na Loja</a> </div>
                              <div class="site_medium_title" style="padding:5px;padding-bottom:0px;"><a target="_blank" style="color:black;" href="<?php
            echo base_url(); ?>site/usuarios_cursos_previa_visualizar_dono/<?php
            echo $item2->cedoc_doc_id_fk; ?>" title="Veja como está ficando">- Visualizar Pr&eacute;via</a> </div>

          <div class="site_medium_title" style="padding:5px;padding-bottom:0px;width:200px;"> <a title="Editar informacoes gerais do curso" style="color:#000000;" href="<?php
            echo base_url(); ?>site/usuarios_cursos_atualizar/<?php
            echo $item2->cedoc_doc_id_fk; ?>" title="Editar informacoes gerais do curso">- Editar informa&ccedil;&otilde;es gerais </a> </div>
            <div class="site_medium_title" style="padding:5px;padding-bottom:0px;width:200px;"> <a title="Inserir aulas" style="color:#000000;" href="<?php
            echo base_url(); ?>site/usuarios_cursos_aulas/<?php
            echo $item2->cedoc_doc_id_fk; ?>" title="Inserir aulas no curso">- Inserir Aulas (<?php
            echo $quant_aulas; ?>)</a> </div>



          <?php
            echo "</td>";
            echo "</tr>";
            $i++;
        }
        echo "</table>";
    }
    else {
        echo "<div class=texto align=center style=margin:10px;>* Seu usuario ainda n&atilde;o cadastrou nenhum curso.</div>";
    }
}
?>
        </div>
        </div>
        </div>
        <?php
include ("site_footer.php");
 ?>
  • 1

    You should separate this code into smaller and more specific functions. It improves readability and makes it easier to understand what’s going on. Those ifs nested are complicated to understand.

  • I didn’t develop it.

  • Yes, it’s in the picture.

  • I think your problem is here: $config['max_size'] = '1000';. Switch to x or take it out of this line to make it unlimited. I don’t know much about php. But I think that’s it.

1 answer

1


This happens because the maximum allowed value for the file size in the key max_size of array $config is smaller than the image size:

$config['max_size'] = '1000';

You must define this property with a value in Kilobytes according to the documentation, then the right thing would be:

$config['max_size'] = '1024'; // 1 MB

Updating: The problem was occurring because the directory did not exist before specifying the directory in the upload, check if it exists:

if (($file_extension == 'jpg') || ($file_extension == 'jpeg') || 
   ($file_extension == 'png')  || ($file_extension == 'gif')) {
    ....
    $diretorio = './uploads/_images/cedoc_doc_' . $data['cedoc_doc_id_fk']; 
    if (!file_exists($diretorio)) {     
        mkdir($diretorio, 0777, true); 
    }
    $config['upload_path'] = $diretorio;
    ....
    ..

Browser other questions tagged

You are not signed in. Login or sign up in order to post.