RE: [Linux-programlama] mysql'e resim kaydetmek

---------

New Message Reply About this list Date view Thread view Subject view Author view Attachment view

From: Dinçer Akay (dincer@sikayetvar.com)
Date: Mon 20 Dec 2004 - 18:45:53 EET


Matrix'te Neu'nun dediði gibi sorun seçimde; yani veritanýnda resim
tutulmasý. Bence resimleri bir dizine atýp veritabanýnda da adlarýný
tutmak daha kullanýþlý olacaktýr gibi geliyor.
 
Fieldtype blob, medium blob veya long blob olmalý
 
google da bulduðum ilk arama Diyorki
Caution!!! This kind of process is very heavy for a database. But that
can have certain advantages, c'est true. Good go I launch out...
 
Attention !!! Ce genre de procédé est très lourd pour une base de
données. Mais cela peut avoir certains avantages, c'est vrai. Bon allez
je me lance...
 
 
 

Déjà il vous faut un script (appelons-le "afficher_image") du genre:

<?php
header('content-type: image/gif');
readfile('/chemin/vers/les/images/image.gif');
?>

                   

                   

(pour content type : référez vous au cours sur la génération d'images)

que l'on appelle au moyen de l'instruction HTML:

<img src="afficher_image.php">
                           
                             
Pour explication, le fichier afficher_image.php équivaut à une image
gif.
                             

Il nous faut créer une base (nous l'appellerons "essai") et une table
(nous l'appellerons "images_binaires") qui comprendra les champs
suivants: id (un entier), donnees_binaires (type MySQL LONGBLOB),
nom_fichier (une chaîne), taille_fichier (une chaîne), type_fichier (une
chaîne), et, éventuellement, un champ description (une chaîne). On
n'oubliera pas de préciser "auto_increment" pour l'identifiant. Nous
allons insérer les images dans la base à l'aide, par exemple, d'un
formulaire HTML. Il ressemblera à:

                             
<form method="post" action="inserer_image.php"
enctype="multipart/form-data">
Nom du fichier:&nbsp;<input type="file" name="image" size="40">
<br><input type="submit" name="ok">
</form>
        
                             
Jusqu'à la pas de problème ? je continue alors :
                             
Notre programme inserer_image.php sera alors le suivant:
                 
                             
<?php
mysql_connect("","root","");
mysql_select_db("essai");
$donnees = addslashes(fread(fopen($image, "r"), filesize($image)));
$result=mysql_query("INSERT INTO images_binaires
(donnees_binaires,nom_fichier,taille_fichier,type_fichier) VALUES
('$donnees','$image_name','$image_size','$image_type')");
$id= mysql_insert_id();
print "<br>Indentifiant du fichier dans la base: $id<br>";
mysql_close();
?>
                 

                   

Bon pas grand chose à expliquer ici non plus a par peut-être la fonction
addslashes() qui ajoute des antislashs devant les caractères
(',",\,NUL). et pour fread() et fopen() revoir les cours sur la gestion
des fichiers.

Un petit programme php, afficher_image.php, va permettre de récupérer
l'image dans la base:

                             
<?php
mysql_connect("","root","");
mysql_select_db("essai");
$requete = "SELECT donnees_binaires,type_fichier FROM images_binaires
WHERE id=$id";
$resultat = mysql_query($requete);
$donnees = mysql_result($resultat,images_binaires.donnees_binaires);
$type = mysql_result($resultat,0,images_binaires.type_fichier);
header( "content-type: $type");
echo $donnees;
?>
        
                             

La non plus rien de spécial, et puis voila c'est fini !

                             

On appellera ce programme avec une instruction HTML du type:

<img src="afficher_image.php"?id=identifiant>

où l'on précisera l'identifiant correspondant.

_______________________________________________
Linux-programlama mailing list
Linux-programlama@liste.linux.org.tr
http://liste.linux.org.tr/mailman/listinfo/linux-programlama


New Message Reply About this list Date view Thread view Subject view Author view Attachment view

---------

Bu arsiv hypermail 2.1.2 tarafindan uretilmistir.