Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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...

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então utilize a variável $novoNome

Compartilhar este post


Link para o post
Compartilhar em outros 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......

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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?

Compartilhar este post


Link para o post
Compartilhar em outros 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

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.