Jump to content
Alberto Beagá

Não estou conseguindo pegar o nome do arquivo

Recommended Posts

Utilizo o script abaixo para enviar arquivos via UPLOAD e automaticamente salvo informações de um formulário no banco de dados...

Como faço para conseguir pegar o novo nome do arquivo?

<?php
        //Upload de arquivos
        // verifica se foi enviado um arquivo
        if(isset($_FILES['arquivo']['name']) && $_FILES["arquivo"]["error"] == 0)
        {
            echo "Você enviou o arquivo: <strong>" . $_FILES['arquivo']['name'] . "</strong><br />";
            echo "Este arquivo é do tipo: <strong>" . $_FILES['arquivo']['type'] . "</strong><br />";
            echo "Temporáriamente foi salvo em: <strong>" . $_FILES['arquivo']['tmp_name'] . "</strong><br />";
            echo "Seu tamanho é: <strong>" . $_FILES['arquivo']['size'] . "</strong> Bytes<br /><br />";

            $arquivo_tmp = $_FILES['arquivo']['tmp_name'];
            $nome = $_FILES['arquivo']['name'];

            // Pega a extensao
            $extensao = strrchr($nome, '.');

            // Converte a extensao para mimusculo
            $extensao = strtolower($extensao);

            // Somente imagens, .jpg;.jpeg;.gif;.png
            // Aqui eu enfilero as extesões permitidas e separo por ';'
            // Isso server apenas para eu poder pesquisar dentro desta String
            if(strstr('.jpg;.png;.gif;.jpeg', $extensao))
            {
                // Cria um nome único para esta imagem
                // Evita que duplique as imagens no servidor.
                $novoNome = md5(microtime()) . $extensao;

                // Concatena a pasta com o nome
                $destino = 'images/uploads/logos/' . $novoNome;

                // tenta mover o arquivo para o destino
                if( @move_uploaded_file( $arquivo_tmp, $destino  ))
                {
                    echo "Arquivo salvo com sucesso em : <strong>" . $destino . "</strong><br />";
                    echo '<img src="' . $destino . '" />';
                    echo '<META http-equiv="refresh" content="0;URL=/administracao">';
                    exit;
                }
                else
                    echo "Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.<br />";
            }
            else
                echo "Você poderá enviar apenas arquivos .jpg, .jpeg, .gif e .png.";
        }
        else
        {
            echo "Você não enviou nenhum arquivo!";
        }
    ?>

Preciso salvar o nome do arquivo novo no registro do mysql que contém os dados preenchidos do formulário...

Share this post


Link to post
Share on other sites

Mas só que quando tento chamar este POST ($nome) , grava o nome antigo e não o que fora criado ao realizar o upload.

Edited by Gabriel Heming
remover quote desnecessário

Share this post


Link to post
Share on other sites

Reitero, o meio de se conseguir o nome do arquivo já está no seu código. Apenas deve utilizá-lo.

$_FILES['userfile']['name']
The original name of the file on the client machine.

Share this post


Link to post
Share on other sites

Caro Gabriel,

Quando utilizo:

$nome


Retorna (salva no banco de dados) o nome original do arquivo (imagem):

Exemplo:

Nome do Arquivo no Computador:
02.gif

Nome do Arquivo quando salvo no Servidor:
276d599c30e5f297b054fd93e86b7e1f.gif

Eu preciso que salve no banco de dados, junto aos dados preenchidos no formulário "276d599c30e5f297b054fd93e86b7e1f.gif" e não "02.gif" pois o nome original por ter sido modificado durante o processo de upload, este não existe mais, por tanto não consigo encontrar o arquivo referente ao registro.

Edited by Gabriel Heming
remover quote desnecessário

Share this post


Link to post
Share on other sites

Então utilize a variável $novoNome

Share this post


Link to post
Share on other sites

Bora ler o PRÓPRIO código?

// Cria um nome único para esta imagem
// Evita que duplique as imagens no servidor.
$novoNome = md5(microtime()) . $extensao;

Se você cria um NOVO NOME para o arquivo, e quer salvar este NOVO NOME, então......

Share this post


Link to post
Share on other sites

Bora ler o PRÓPRIO código?

Se você cria um NOVO NOME para o arquivo, e quer salvar este NOVO NOME, então......

... então, se utilizo desta forma, não sei porque não salva ...

Agora, estranhamento é exibido o nome através de ECHO

Share this post


Link to post
Share on other sites

... então, se utilizo desta forma, não sei porque não salva ...

Então é um erro na hora da gravação no BD.

Já fez o debug da query que faz a inserção? Já verificou o tamanho do campo no BD?

Share this post


Link to post
Share on other sites

Então,

Fiz o seguinte:

1. Alterei o VARCHAR para 255, mas mesmo assim continua não inserindo o nome

2. Estou utilizando:

$novoNome = $_POST ["novoNome"];
3. Verifiquei se os outros campos estão sendo gravados, e sim, eles estão sendo gravados. Não estou conseguindo apenas "pegar" o nome novo que o arquivo recebe ao realizar o upload.

Agora, estranhamento através do comando abaixo, consigo "printar" na tela:

echo "<center> Nome de seu arquivo (anote ele) : <strong>" . $novoNome . "</strong><br />";
Então, na tela seguinte ao envio, além de exibir a imagem, consigo consigo visualizar na tela o nome do arquivo... agora porque?

Nome de seu arquivo (anote ele) : [/size]63be5b6824866d0047374de88984f7ea.gif

Edited by Gabriel Heming
remover quote desnecessário

Share this post


Link to post
Share on other sites

2. Estou utilizando:

$novoNome = $_POST ["novoNome"];

Cara, a variável 'novoNome' é criada no seu script de upload, ela não vem via POST.

A inserção no BD é feita neste mesmo arquivo? Em outro? Se em outro, como você o chama? Onde você está dando o echo na variável?

Poste seu código de inserção no BD também, porque não dá pra saber onde você está errando se não soubermos o que está fazendo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.