数据库 PHP 如何显示数据库中的图像


database php how to display an image from the database

我写了这段代码来显示图像:

<?php
$sel = " SELECT *
         FROM immagini
         WHERE id= ".$_GET['idx'];
$ris = mysqli_query($con,$sel);      
$count = mysqli_num_rows($ris);     
if($count >= 1)  echo "<h1>Dettagli dello studente: </h1>";
while ( $riga = mysqli_fetch_array($ris)) {         
    echo "ID  = ".$riga['id']; ?> <br > <?php
    echo "Nome = ".$riga['name']; ?> <br > <?php
    echo "Descrizione = ".$riga['descrizione']; ?> <br > <?php     
    $imageData= $riga["image"];
    header("content-type :image/jpeg");
    echo $imageData;                 
    }
?>

但结果是这样的:

Dettagli dello studente:ID = 2诺姆=朱莉娅Descrizione = Questo frattale ha delle caratteristiche particolari, in quanto.....����'u0010JFIF,,��C'f'u000f'u000b'u000b!"$"$ C }!1AQa"q2 #B R $3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2 B #3R br $4 % &'()56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz ? ĺٙ }cW 6 pm $ύ p 7 bjT 8 ? ? 一 . W> E W3/- K XI~ } % 6 A'' ; 8$ ^I U}k ]ب L t# :u ]#Ȯ Tѕ { ˯ 7I j _R3 P |d + u % + 1? + u6c w m 5H o m 5@ 5/w j j_ :7 Կ to ? ~ + T R ѿ Ww ƨ C P I ; 9 ; P _ 3 q ˯ 7T . + h>7' w j r ڋ 1W w Ʃ ..4 B R ѿ Ww Ʃ ? ~ + T R ѿ Ww ƨ C P K 7 F ] o 5@ 5/w j jO 9 TƟ so j- ? m 7U(J; ; 3o J 1 " q { L| ? u r L Qob'u000b^)f ? N Y^; mK R 8 3 X Z; ) X ? e 7|3 # sg8 *> S T۽ e~/=9> } V/$O>w I N A> R ,'u000b/] z} & ac ~O 4_ #(5Sϭ j |dw ̵ 97 틏 K/Gx ( y f K =H F ? .x rB mi 7 Q ".F/Ɲ ? ! 8x O ; { i x ( F' ٛ ? # r i ^ G {9 8 G u (u m G g Q g ^ ~ = Q i .y q i t u 4u ?! ! iK {H (#; yj i : GOz= E {$r?>[9I|F2? i3 %Z Ռϗ N_ 8 pO x t?׭cFr n#_ UY t/(S e wF ; y _N: t' 8Ez 7) d ; 3 'T N ' , wBx 3ʱ K+ Fr 鶝| ' , ? @ ;E t CR% ! x F ]n G ) d Q H

我该如何解决这个问题?????我认为图像的转换存在问题。谢谢。

echo "ID  = ".$riga['id']; ?> <br > <?php
echo "Nome = ".$riga['name']; ?> <br > <?php
echo "Descrizione = ".$riga['descrizione']; ?> <br > <?php   

在你发送了这么多回声之后

 header("content-type :image/jpeg");

这在那里毫无意义,因此输出混乱。如果要发送图像内容,则只能使用正确的标头发送该图像内容作为响应。不能在一个响应中同时混合图像和文本。

TLDR;删除除图像内容及其标题之外的所有其他回显。

当您必须从数据库中输出图像时(尽管这基本上是一个坏主意),请确保您没有回显任何内容,只需像这样发送标头:

    <?php
    $imageData= $riga["image"];
    header("content-type :image/jpeg");
    echo $imageData;                 
?>

但是你应该稍微重写一下代码,使其更有用。

我同意Hanky Panky,你不能混合需要不同输出方法的图像和文本。

假设使用 base64,而不是

$imageData= $riga["image"];
header("content-type :image/jpeg");
echo $imageData;     

你能试试吗

$imageData= "<img src='data:image/jpeg;base64,".$riga["image"]."' />";
echo $imageData;

另外,如何在HTML中显示Base64图像? 提供了更多信息,可以帮助您

除了Hanky Panky和WongFailHung提出的观点之外,你不能输出比图像更多的内容来响应相同的请求。实际上,您可以发送数据,但您只会看到第一张图像。