2010-11-03 5 views
3

Je souhaite afficher une image au lieu de la télécharger.Je souhaite afficher une image au lieu de la télécharger (image dans le blob de la base de données)

J'ai l'image dans ma table de base de données, colonne comme BLOB.

Cet extrait télécharge l'image, mais je veux afficher la place:

$query = "SELECT * FROM upload"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result); 
$content = $row['content']; 
$size = $row['size']; 
$type = $row['type']; 
header("Content-length: $size"); 
header("Content-type: $type"); 

// The following headers make the image download, but I don't want it to 
// download, I want to show the image. What should I do? 
// header("Content-Disposition: attachment; filename=$name"); 

echo $content; 
+1

Votre code devrait fonctionner tel quel, étant donné que vous avez commenté la ligne "Content-Disposition". Ce qui compte vraiment, c'est l'en-tête "Content-Type". Vous devez vous assurer que cela contient quelque chose comme "image/jpeg" afin que le navigateur sache que c'est une image. – kijin

+0

Avez-vous effacé le cache du navigateur? Ça arrive tout le temps avec moi. – kijin

Répondre

0

si vous souhaitez utiliser cette rendre plus dynamiquement un script de votre code d'origine et l'appeler comme ceci:

<img src="image.php?imageid=$myImageID" /> 

et votre script est:

$myImageID = $_GET["myImageID"]; 
$query = "SELECT * FROM upload where id='"+$myImageID+"'"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result); 
$content = $row['content']; 
$size = $row['size']; 
$type = $row['type']; 
header("Content-length: $size"); 
header("Content-type: $type"); 
//header("Content-Disposition: attachment; filename=$name");---> this headers make system to download , but i dont want to download, i want to show image, what should i do , 
echo $content; ?>" 
+0

l'extrait ci-dessus fonctionne maintenant, montrant plutôt l'image, il montre juste le chemin comme http: //localhost/source/iq/upload-file-mysql.php – Bharanikumar

+0

si votre code php n'est pas correct votre image n'est pas montrée, et si vous accès disons l'image.php? imageId = $ myImageID dans un navigateur, vous devriez voir votre image – CristiC

+0

ce code est extrêmement dangereux! Ne savez-vous pas que vous ne faites jamais confiance aux entrées des utilisateurs? C'est un moyen sûr d'obtenir une injection SQL! – vasilevich

1

Le contraire contenu de disposition attachment est inline. Essayez ceci:

header("Content-Disposition: inline; filename=$name"); 
0

vous devez être sûr que rien d'autre que vos en-têtes et le contenu de l'image est envoyé au client. peut-être que vous voulez faire une sortie après echo $ content; Ce n'est pas une bonne pratique et ne garantit pas non plus que rien d'autre n'a été envoyé avant de sortir le contenu de l'image, mais il devrait faire le travail.

Questions connexes