Ir ao conteúdo

PHP Upload simples de imagem com $_FILES não executa nada


Ir à solução Resolvido por GabrielSennaMs,

Posts recomendados

Postado

Fala galera, tudo bem? Iniciante na área.

 

Estou fazendo uns testes e gostaria de fazer um upload de imagem que vem do formulário HTML. No mesmo especifiquei o enctype, e no input o accept para imagens. Beleza até aí.

 

Acontece que ao tratar esses arquivos com o PHP nada acontece. Já escrevi e reescrevi o código de diversas maneiras e nada acontece, a imagem não é salva temporariamente em /tmp do Xampp e a função move_uploaded_file parece não fazer absolutamente nada, pois não é movido. Mudei o caminho do diretório N vezes, chamei o índice de erro da superglobal $_FILES pra ver se me dava alguma pista, mas ele não imprime nada.

 

Como vocês podem ver no código, ele parece executar o bloco do ELSE em diante, ignorando o IF com a função move_uploaded... 

 

Alguém pode me dar uma luz? Foram umas 4hrs perdidas nesse código simples hahahahahah

 

<html lang="pt-br">
<head>
    <meta charset="utf-8" />
</head>
<body>
    <form method="post" action="teste.php" enctype=”multipart/form-data”>

        <input type="file" name="arquivo" accept="image/*" /><br /><br />
        <input type="submit" name="enviar" value="Enviar" />

    </form>

    <?php
    
    $directory = 'imagens/';
    $imagem = $directory . isset($_FILES['arquivo']['name']);

    if (move_uploaded_file(isset($_FILES['arquivo']['tmp_name']), $imagem)) {
        echo "Movido com sucesso";
    } else {
        echo "Ocorreu um erro" . isset($_FILES['arquivo']['error']);
    }
      
    ?>
</body>
</html>

 

Postado

@SethC olhada aqui eu não vi nada de errado, mas pode ser algum problema no endereço do diretório ou na permissão do php para salvar o arquivo.

 

Eu fiz algumas modificações no seu código, testa e verifica se aparece algum erro.

<?php

error_reporting(E_ALL);
ini_set("display_errors", 1);

$msg = null;

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    if (isset($_FILES["arquivo"]))
    {
        $fileName  = $_FILES['arquivo']['name'];
        $directory = str_replace("/", DIRECTORY_SEPARATOR, __DIR__ . "/imagens/");
        $localTemp = $_FILES["arquivo"]["tmp_name"];

        if (move_uploaded_file($localTemp, $directory . $fileName))
        {
            $msg = "Movido com sucesso";
        }
        else
        {
            $msg = "Ocorreu um erro" . isset($_FILES['arquivo']['error']);
        }
    }
    else 
    {
        $msg = "Nenhum arquivo foi enviado";
    }
}

?>
<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
        <form method="post" action="/" enctype="multipart/form-data">
            <input type="file" name="arquivo" accept="image/*" />
            <br /><br />
            <input type="submit" name="enviar" value="Enviar" />
        </form>
        <div>
            <?= $mgs ?>
        </div>
    </body>
</html>

 

Testa ae!

  • Amei 1
Postado
20 horas atrás, GabrielSennaMs disse:

@SethC olhada aqui eu não vi nada de errado, mas pode ser algum problema no endereço do diretório ou na permissão do php para salvar o arquivo.

 

Eu fiz algumas modificações no seu código, testa e verifica se aparece algum erro.

<?php

error_reporting(E_ALL);
ini_set("display_errors", 1);

$msg = null;

if ($_SERVER["REQUEST_METHOD"] == "POST")
{
    if (isset($_FILES["arquivo"]))
    {
        $fileName  = $_FILES['arquivo']['name'];
        $directory = str_replace("/", DIRECTORY_SEPARATOR, __DIR__ . "/imagens/");
        $localTemp = $_FILES["arquivo"]["tmp_name"];

        if (move_uploaded_file($localTemp, $directory . $fileName))
        {
            $msg = "Movido com sucesso";
        }
        else
        {
            $msg = "Ocorreu um erro" . isset($_FILES['arquivo']['error']);
        }
    }
    else 
    {
        $msg = "Nenhum arquivo foi enviado";
    }
}

?>
<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="utf-8" />
    </head>
    <body>
        <form method="post" action="/" enctype="multipart/form-data">
            <input type="file" name="arquivo" accept="image/*" />
            <br /><br />
            <input type="submit" name="enviar" value="Enviar" />
        </form>
        <div>
            <?= $mgs ?>
        </div>
    </body>
</html>

 

Testa ae!

Boa noite, Gabriel. Eu testei o código e depois de enviar a imagem ele manda pro localhost/, página inicial.

 

Mas chequei no /tmp e não envia a imagem temporariamente. Não entendo o que há. 

Postado

@GabrielSennaMssó pra atualizar, estava mandando pro localhost/ por causa da "/" quw você colocou no action do form e eu esqueci de checar antes hahahahaa Seu código funcionou perfeitamente. Mas pra matar de vez a dúvida, então, talvez seja mesmo por causa do nome do diretório né? 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!