8795 sujets

Développement web côté serveur, CMS

Bonsoir,

Je viens de réaliser un script à l'aide de quelques tutoriels disponibles sur Developpez. Ce script a pour but d'encoder une image dans une table via le Type BLOB comme attribut de l'image en question.

L'encodage se passe très bien, j'ai bien vérifié via phpMyAdmin.

Le seul problème, c'est l'affichage en lui-même. J'ai respecter scrupuleusement le tuto, mais malgré cela j'ai toujours des problèmes.

En fait au lieu de m'afficher l'image, il m'affiche ceci :

Smiley url http://localhost/Viet%20Vo%20Dao/index.php?page=apercu&id=3[/url]

Mais la ou c'est étrange, c'est qu'il me l'affiche comme image et non pas comme texte.(Je ne peux rien selectionner Smiley langue )

D'apres certains forums, le fait que je sois en local ne devrait rien changer est-ce vrai ?

Si, oui quel est le problème ? Voici mes scripts :

[envoi_image.php]

<html>
<head>
<title>Stock d'images</title>
</head>
<body>
<?php
include ("transfert.php");
if ( isset($_FILES['fic']) )
{
transfert();
}
?>
<h3>Envoi d'une image</h3>
<form enctype="multipart/form-data" action="#" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="250000" />
<input type="file" name="fic" size=50 />
<input type="submit" value="Envoyer" />
</form>
<p><a href="index.php?page=liste">Liste</a></p>
</body>
</html>


[transfert.php]

<?php
function transfert ()
{
$ret = false;
$img_blob = '';
$img_taille = 0;
$img_type = '';
$img_nom = '';
$taille_max = 250000;
$ret = is_uploaded_file ($_FILES['fic']['tmp_name']);
if ( !$ret )
{
echo "Problème de transfert";
return false;
}
else
{
// Le fichier a bien été reçu
$img_taille = $_FILES['fic']['size'];
if ( $img_taille > $taille_max )
{
echo "Trop gros !";
return false;
}
$img_type = $_FILES['fic']['type'];
$img_nom = $_FILES['fic']['name'];

include ("connexion.php");

$img_blob = file_get_contents ($_FILES['fic']['tmp_name']);
$req = "INSERT INTO vovinam_images (".
"img_nom, img_taille, img_type, img_blob ".
") VALUES (".
"'".$img_nom."', ".
"'".$img_taille."', ".
"'".$img_type."', ".
// N'oublions pas d'échapper le contenu binaire
"'".addslashes ($img_blob)."') ";
$ret = mysql_query ($req) or die (mysql_error ());
return true;

}
}
?>


[liste.php]

<body>
<?php
include ("connexion.php");
$req = "SELECT img_nom, img_id ".
"FROM vovinam_images ORDER BY img_nom";
$ret = mysql_query ($req) or die (mysql_error ());
while ( $col = mysql_fetch_row ($ret) )
{
echo "<a href=\"index.php?page=apercu&amp;id=".$col[1]."\">".$col[0]."</a><br />";
}
?>


[apercu.php]

<?php

if (isset($_GET['id']) )
{
$id = intval ($_GET['id']);
include ("connexion.php");
$req = "SELECT img_id, img_type, img_blob ".
"FROM vovinam_images WHERE img_id = ".$id;
$ret = mysql_query ($req) or die (mysql_error ());
$col = mysql_fetch_row ($ret);
if ( !$col[0] )
{
echo "Id d'image inconnu";
}
else
{
header ("Content-type: ".$col[1]);
echo $col[2];

}
}
else
{
echo "Mauvais id d'image";
}

?>





Merci d'avance :cry:
a écrit :
D'apres certains forums, le fait que je sois en local ne devrait rien changer est-ce vrai ?


Ca peut changer, par exemple chez moi, en local l'extension qui gère ma librairie GD (l'affichage d'images générées par PHP, entre autres) ne fonctionne pas, et j'ai jamais su pourquoi (j'ai jamais beaucoup cherché non plus, car pas vraiment besoin de cette extension sauf pour quelques captchas).
Donc je sais pas il y a peut être un problème avec l'une de tes extensions, sinon je te conseille de tester ton script sur serveur en ligne avant de le modifier...