[PHP] insérer une image dans MySql

insérer une image dans MySql [PHP] - PHP - Programmation

Marsh Posté le 16-09-2003 à 10:04:09    

J'essaye d'insérer une image dans un champ de type BLOB
dans une DB mysql.
 
certaines fonctions marchent,
je peux en effet visualiser une image que j'ai inséré "à la main" avec MySql Control Center,
 
mais je n'arrive pas à insérer cette même image avec un script PHP.
 
mysql-3.23.52-17
PHP Version 4.2.2
 
Après un form qui sélectionne l'image, voici le script :

Code :
  1. $hndl=fopen($_REQUEST["imgfile"],"r" );
  2.   $imgdata=fread($hndl,filesize($_REQUEST["imgfile"]));
  3.  
  4.   $imgdata=addslashes($imgdata);
  5.   $dbname ="test";
  6.   $dbserver = "localhost";
  7.   $dbuser ="root";
  8.   $dbpass ="test";
  9.   $dbconn = @mysql_connect($dbserver,$dbuser,$dbpass) or exit("SERVER Unavailable" ); 
  10.   @mysql_select_db($dbname,$dbconn) or exit("DB Unavailable" ); 
  11.   $sql = "INSERT INTO tblimage VALUES(NULL,'". $_REQUEST["imgtype"] ."','". $imgdata ."')"; 
  12.   @mysql_query($sql,$dbconn) or exit("QUERY FAILED!" ); 
  13.   mysql_close($dbconn); 
  14.   fclose($hndl);


 
et l'erreur :

Code :
  1. Warning: fopen("C:\\bg_header2.gif", "r" ) - No such file or directory in /srv/www/htdocs/test_imagedb.php on line 32
  2. Warning: stat failed for C:\\bg_header2.gif (errno=2 - No such file or directory) in /srv/www/htdocs/test_imagedb.php on line 33
  3. Warning: fread(): supplied argument is not a valid File-Handle resource in /srv/www/htdocs/test_imagedb.php on line 33
  4. Warning: fclose(): supplied argument is not a valid File-Handle resource in /srv/www/htdocs/test_imagedb.php on line 52


Une seule erreur donc, il n'arrive pas à lire l'image, mais pourquoi ?
J'insiste que la table est bien configurée,
puisque j'arrive à lire une image que j'ai inséré avec
Mysql Control Center.


Message édité par warp le 16-09-2003 à 10:04:38

---------------
Il n'est pas nécéssaire de réussir pour persévérer.
Reply

Marsh Posté le 16-09-2003 à 10:04:09   

Reply

Marsh Posté le 16-09-2003 à 10:05:31    

Ah oui, petite précision
 
la BD tourne sur un ordi,
et je teste le script sur un autre.....
(vous l'aurez remarqué avec les messages d'erreur)


Message édité par warp le 16-09-2003 à 10:06:09

---------------
Il n'est pas nécéssaire de réussir pour persévérer.
Reply

Marsh Posté le 16-09-2003 à 10:16:34    

warp a écrit :

Ah oui, petite précision
 
la BD tourne sur un ordi,
et je teste le script sur un autre.....
(vous l'aurez remarqué avec les messages d'erreur)

ha ben dans ce cas,il faut pas mettre c:\ mais http://ip_de_ordi/image.truc

Reply

Marsh Posté le 16-09-2003 à 10:21:04    

Dans le cas d'un ordi qui met ses fichiers
à disposition via un serveur web,
 
mais si je veux uploder un fichier sur un serveur....?


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
Reply

Marsh Posté le 16-09-2003 à 11:21:18    

Faudrait pas faire un stripslashes sur le chemin de tes images? Le \ a été échapé on dirait.

Citation :

C:\\bg_header2.gif


Message édité par belgique le 16-09-2003 à 11:22:02
Reply

Marsh Posté le 16-09-2003 à 12:09:09    

warp a écrit :

Dans le cas d'un ordi qui met ses fichiers
à disposition via un serveur web,
 
mais si je veux uploder un fichier sur un serveur....?


 
euh si tu veux uploader le fichier vers le serveur, l'adresse ne peut pas être c:\\etc... il faut que tu passes par un formulaire pour envoyer ton fichiersur le serveur (1ère étape) et ensuite l'insérer dans ta base.
 
edit: ah bah non, tu passes déjà par un formulaire, mais à quoi correspond imgfile??


Message édité par dropsy le 16-09-2003 à 12:10:22
Reply

Marsh Posté le 16-09-2003 à 13:54:16    

J'ai la réponse (mais pas encore l'explication)
 
il faut utiliser :

Code :
  1. <form method="POST" action="<?= $_SERVER["PHP_SELF"] ?>" enctype="multipart/form-data">


 
et non pas ce que j'avais trouvé sur le premier exemple :

Code :
  1. <form method="POST" action="<?= $_SERVER["PHP_SELF"] ?>" enctype="application/x-www-form-urlencoded">


 
OK c'est normal, vu l'explication :
http://www.w3.org/TR/REC-html40/in [...] ntent-type


---------------
Il n'est pas nécéssaire de réussir pour persévérer.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed