Ir ao conteúdo
  • Cadastre-se
GabrielGMT

Erro ao upar imagem no banco / php-mysql

Recommended Posts

Olá amigos, estou tendo o seguinte erro ao tentar upar uma imagem no BANCO.

Warning: move_uploaded_file(foto/1476378961.jpg): failed to open stream: Permission denied in C:\Program Files\VertrigoServ\www\db\admin\upload_venda.php on line 51.

 

Alguém ai poderia me ajuda?

Segue o código em PHP

 

<?php
include("segurança.php");
PaginaSegura();
?>
<!DOCTYPE html>
<html lang="pt-br">
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" href="../css/style(admin).css" />
    </head>
    <body>
    <a href="index_venda_img.php"><input class="botao" type="button" name="novo" value="Tentar Novamente"/></a>
        <?php
            include_once("../conexao.php");
            $arquivo     = $_FILES['arquivo']['name'];
            $Cod_vd = $_POST['Cod_vd'];
            
            $_UP['pasta'] = 'foto/';
            $_UP['tamanho'] = 1024*1024*100; //5mb
            $_UP['extensoes'] = array('png', 'jpg', 'jpeg');
            $_UP['renomeia'] = false;
            $_UP['erros'][0] = "<font color='red'>Não houve erro";
            $_UP['erros'][1] = "<font color='red'>A Foto no upload é maior que o limite do PHP";
            $_UP['erros'][2] = "<font color='red'>A Foto ultrapassa o limite de tamanho especificado no HTML";
            $_UP['erros'][3] = "<font color='red'>O upload da Foto foi feito parcialmente";
            $_UP['erros'][4] = "<font color='red'>Não foi feito o upload da Foto";

            if($_FILES['arquivo']['error'] != 0){
                die("<center><IMG width='100%' SRC='../images/error.png'/><br/>". $_UP['erros'][$_FILES['arquivo']['error']]);
                exit;
            }
            @$extensao = strtolower(end(explode('.', $_FILES['arquivo']['name'])));
            if(array_search($extensao, $_UP['extensoes'])=== false){        
                echo "<center><IMG width='100%' SRC='../images/error.png'/><br/>
                    <font color='red'>A Imagem não foi cadastrada, extensão inválida.";
            }
            else if ($_UP['tamanho'] < $_FILES['arquivo']['size']){
                echo "<center><IMG width='100%' SRC='../images/error.png'/><br/>
                <font color='red'>Imagem muito grande.";
            }
            else{
                if($_UP['renomeia'] == true){
                    $nome_final = time().'.jpg';
                    $nome_final1 = 'admin/foto/'.time().'.jpg';
                }else{
                    $nome_final = time().'.jpg';
                    $nome_final1 = 'admin/foto/'.time().'.jpg';
                }
                if($_POST["Cod_vd"] == ""){
                echo "<center><p><font color='red'>Código nao inserido!</font>";
                @$rsp == FALSE;}
                if(move_uploaded_file($_FILES['arquivo']['tmp_name'], $_UP['pasta'].$nome_final)){
                    $query =mysql_query("UPDATE venda SET Cod_vd='$Cod_vd', Foto_vd='$nome_final1'
                                         WHERE Cod_vd='$Cod_vd'");
                    header("Location: http://localhost/db/admin/venda_enviado.php");
                }
                else{
                    echo "<center><IMG width='100%' SRC='../images/error.png'/><br/>
                            <font color='red'>Imagem não foi cadastrada com Sucesso.";
                }
            }
        ?>  
    </body>
</html>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@GabrielGMT Basicamente ele diz que é erro de permissão... mas não sei exatamente onde.

Já aproveito e pergunto: Tem real necessidade de enviar imagens para o banco de dados? Isso só vai deixar ele mais lento, consultas mais lentas... prejudicando o desempenho.

 

Upe as imagens para uma pasta do servidor no banco de dados, apenas guarde o nome do arquivo de imagem e a url dela. assim não há problemas.

Vejo também que está usando muitos atributos inline. Evite estes atributos ainda mais os obsoletos como center, font

Compartilhar este post


Link para o post
Compartilhar em outros sites

O certo a você fazer é colocar o nome da imagem no banco por exemplo.

$imagem = fotinho_do_meu_gato.jpg
mysqli_query($conexao,"insert into banco_imagens(imagem) values ('$imagem');

MAS o legal seria criar um nome randomico dependendo da data e horário pra nunca ter uma igual, caso se interesse eu posto aqui.

Depois você retorna em um select pra um img:

<?php
	$select = mysqli_query($conexao,"select * from banco_imagens);
	while($imagem = mysqli_fetch_assoc($select){
?>
	<img src="imagens/<?=$imagem?>">
<?php
	}
?>

Inserir uma imagem totalmente alem de ser trabalhoso, é totalmente MUITO mal otimizado.

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro 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 publicações 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

×