2
respostas

Como eu posso incluir uma foto no perfil de usuário usando o php?

// Estou usando esse form

<form method="POST" action="./paginas/padroes/proc_upload.php" enctype="multipart/form-data">
                    <input type="hidden" name="MAX_FILE_SIZE" value='3000000' >

                   <input name="arquivo" type="file"><br>

                    <input type="submit" class="btn btn-primary" value="Cadastrar">
                  </form>

e esse código foi o que consegui fazer,porém não está salvando a imagem.

<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="utf-8">
    </head>
    </body>
        <?php
            include("connect.php");
            $arquivo     = $_FILES['arquivo']['name'];

            $_UP['pasta'] = 'imagens';

            $_UP['tamanho'] = 1024*1024*100; //5mb

            $_UP['extensoes'] = array('png', 'jpg', 'jpeg', 'gif');

            $_UP['renomeia'] = false;

            $_UP['erros'][0] = 'Não houve erro';
            $_UP['erros'][1] = 'O arquivo no upload é maior que o limite do PHP';
            $_UP['erros'][2] = 'O arquivo ultrapassa o limite de tamanho especificado no HTML';
            $_UP['erros'][3] = 'O upload do arquivo foi feito parcialmente';
            $_UP['erros'][4] = 'Não foi feito o upload do arquivo';

            if($_FILES['arquivo']['error'] != 0){
                die("Não foi possivel fazer o upload, erro: <br />". $_UP['erros'][$_FILES['arquivo']['error']]);
                exit; 
            }

            $extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));
            if(array_search($extensao, $_UP['extensoes'])=== false){        
                echo "
                    <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://localhost/imagens'>
                    <script type=\"text/javascript\">
                        alert(\"A imagem não foi cadastrada extesão inválida.\");
                    </script>
                ";
            }

            else if ($_UP['tamanho'] < $_FILES['arquivo']['size']){
                echo "
                    <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://localhost/imagens.php'>
                    <script type=\"text/javascript\">
                        alert(\"Arquivo muito grande.\");
                    </script>
                ";
            }


            else{
                if($UP['renomeia'] == true){
                    $nome_final = time().'.jpg';
                }else{
                    $nome_final = $_FILES['arquivo']['name'];
                }
                if(move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['imagens']. $nome_final)){
                    $query = mysqli_query($connect, "INSERT INTO tbl_user (
                    foto) VALUES('$nome_final')");
                    echo "
                        <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://localhost/FlySys/imagens'>
                        <script type=\"text/javascript\">
                            alert(\"Imagem cadastrada com Sucesso.\");
                        </script>
                    ";    
                }else{
                    echo "
                        <META HTTP-EQUIV=REFRESH CONTENT = '0;URL=http://localhost/imagens'>
                        <script type=\"text/javascript\">
                            alert(\"Imagem não foi cadastrada com Sucesso.\");
                        </script>
                    ";
                }
            }


        ?>

    </body>
</html>
2 respostas

Tenta fazer este ajuste para identificar o tipo de erro:

$moveu = move_uploaded_file($_FILES['arquivo']['tmp_name'],  $_UP['imagens']. $nome_final);

if( $moveu ) {
  echo "Sucesso!";         
} else {
  echo "Problema - Erro #".$_FILES["arquivo"]["error"];
}

Os códigos de erro que podem ocorrer são:

PLOAD_ERR_INI_SIZE = Value: 1; The uploaded file exceeds the upload_max_filesize directive in php.ini.

UPLOAD_ERR_FORM_SIZE = Value: 2; The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.

UPLOAD_ERR_PARTIAL = Value: 3; The uploaded file was only partially uploaded.

UPLOAD_ERR_NO_FILE = Value: 4; No file was uploaded.

UPLOAD_ERR_NO_TMP_DIR = Value: 6; Missing a temporary folder. Introduced in PHP 5.0.3.

UPLOAD_ERR_CANT_WRITE = Value: 7; Failed to write file to disk. Introduced in PHP 5.1.0.

UPLOAD_ERR_EXTENSION = Value: 8; A PHP extension stopped the file upload. PHP does not provide a way to ascertain which extension caused the file upload to stop; examining the list of loaded extensions with phpinfo() may help.

Não apareceu nenhum erro semelhante a esses. Aparentemente o código funciona,mas a imagem não salva na pasta "imagens" como eu coloquei no $UP['imagens']. $nomefinal).

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software