1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

(php/mysql) Problema para visualizar imagem

Discussão em 'Web Development' iniciada por Informatica, 9 de Outubro de 2007. (Respostas: 6; Visualizações: 2761)

  1. Não sou programador, mas pediram-me para efectuar uma aplicação em php. O meu objectivo neste momento é fazer aparecer uma imagem que carreguei para a base de dados. O script está feito de modo a que apenas uma imgem seja seleccionada, no caso a que tiver o campo 'activa' = "S". Ficam aqui os scripts criados:

    insere.php (a funcionar perfeitamente)
    ************************************************************
    <html>
    <head>
    <title>Inserção de imagem / texto</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    </head>

    <body>
    <?php
    if(isset($_POST['upload']))
    {
    $fileName = $_FILES['userfile']['name'];
    $tmpName = $_FILES['userfile']['tmp_name'];
    $fileSize = $_FILES['userfile']['size'];
    $fileType = $_FILES['userfile']['type'];
    $mensagem = $_POST["mensagem"];
    $activa = $_POST["activa"];

    $fp = fopen($tmpName, 'r');
    $content = fread($fp, filesize($tmpName));
    $content = addslashes($content);
    fclose($fp);



    if(!get_magic_quotes_gpc())
    {
    $fileName = addslashes($fileName);
    }



    mysql_connect("localhost", "xxx", "xxx") or die ("Erro na Ligação ao Servidor");

    if ($activa=="S") {
    $sql2 = "SELECT * from caixa where activa = \"S\"";
    $res = mysql_db_query("bd", $sql2);
    if ($res) {
    $count=0;
    while ($registo = mysql_fetch_array($res)) {
    $reg[$count] = $registo['id'];
    $count++;
    }
    }
    for ($i=0; $i<=$count-1; $i++) {
    $sql3="update caixa set activa='N' where id='".$reg[$i]."'";
    $res2 = mysql_db_query("bd", $sql3);
    if ($res2) {
    print ("Activação da nova caixa efectuada com sucesso! <br>");
    }
    }
    }


    $query = "INSERT INTO caixa(nome, tipo, tamanho, ficheiro, mensagem, activa) VALUES('$fileName', '$fileType', '$fileSize', '$content', '$mensagem', '$activa')";

    $result = mysql_db_query("bd", $query);
    if (!$result) {
    echo "Falha no Upload do Ficheiro!!!";
    }else{
    echo "<br>File $fileName uploaded<br>";}

    mysql_close();

    }
    ?>
    <form action="" method="post" enctype="multipart/form-data" name="uploadform">
    <table width="350" border="0" cellpadding="1" cellspacing="1" class="box">
    <tr>
    <td width="246"><input type="hidden" name="MAX_FILE_SIZE" value="2000000"><input name="userfile" type="file" class="box" id="userfile">
    </td>
    <p> Mensagem / Descrição do Ficheiro!
    <input type="text" name="mensagem" size=150>
    <p>Activar?
    <br>
    <input type="radio" name="activa" value="S">Sim
    <br>
    <input type="radio" name="activa" value="N" checked>Não
    <p> Upload do Ficheiro!
    <td width="80"><input name="upload" type="submit" class="box" id="upload" value=" Upload "></td>
    </tr>
    </table>
    </form>
    </body>
    </html>
    *******************************************************************

    visualiza.php (em vez de aparecer a imagem, como era suposto, aparece o código da mesma)
    *****************************************************************
    <html>
    <head>
    <title>Conteudo Inicial</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>

    <body>
    <?
    mysql_connect("localhost", "xxx", "xxx") or die ("Erro na Ligação ao Servidor");

    $query = "SELECT * FROM caixa where activa ='S'";
    $result = mysql_db_query("bd", $query) or die('Erro! Falha na pesquisa!');
    if(mysql_num_rows($result) == 0){
    echo "Nenhuma mensagem activa <br>";
    }else{
    if ($registo = mysql_fetch_array($result)) {
    $ficheiro = $registo['ficheiro'];
    $ficheiro = stripslashes($ficheiro);
    $mensagem = $registo['mensagem'];
    $tamanho = $registo['tamanho'];
    $tipo = $registo['tipo'];
    $nome = $registo['nome'];

    print ("<br> $mensagem <br> $tamanho <br> $tipo <br>");
    print ("<br> <br> <br> <be> <br>");

    header("Content-type: $tipo");


    echo "$ficheiro";

    }else{
    print("Site em Manutenção!");
    }
    }
    ?>
    </body>
    </html>
    ***************************************************************

    Agradeço antecipadamente qualquer solução.

    Cumprimentos,
    Paulo Silva Pinto
     
    Última edição: 9 de Outubro de 2007
  2. K0mA

    K0mA Power Member

    Boas,

    Não sei se será isto mas onde tens echo "$ficheiro"; (perto do final) devias ter
    Penso eu, não sei se será só isso.
     
  3. capricorn

    capricorn Power Member

    o header("Content-type: $tipo"); está a mais e o K0mA falou bem
     
  4. Obrigado pela ajuda, mas não resolveu. Com o echo "<img src=\"$ficheiro\">"; aparece o quadrado com uma cruz a dizer que realmente procurou exibir a imagem, mas à frente dissso continua a aparecer o código da mesma. Também retirei o header("Content-type: $tipo");, mas este não será necessário para o browser saber o tipo de imagem a exibir?

    Mais alguma solução?

    Obrigado mais uma vez,

    Paulo Silva Pinto
     
  5. K0mA

    K0mA Power Member

    Acho que tens de rever o teu sistema de upload da imagem.
    Para onde estás a enviar a imagem?
    echo "<img src=\"caminho_para_o_ficheiro/$ficheiro\">"; tem de dar a não ser que haja algum problema com o envio da imagem.

    Vê por aqui.

    Boa sorte.
     
  6. O upload está a ser efectuado para dentro da base de dados mysql. Já confirmei que as imagens estão lá pois tenho um script que me permite visualiza-las a partir de um url. O que não consigo é que elas abram imediatamente sem ser preciso clicar no tal url. Já perdi horas a pesquisar e não encontro nada de errado no meu script, mas o certo é que não funciona.

    Obrigado pelo link que me deste, Vou ver isso.
     
  7. capricorn

    capricorn Power Member

    o que tens de fazer é por esse url que falas dentro da <img src='url'>
     

Partilhar esta Página