Php postgres importation d'Images de la base

asdeejay Messages postés 9 Statut Membre -  
asdeejay Messages postés 9 Statut Membre -
Bonjour,
Je suis entrain de faire un petit programme en PHP qui permet d"importer des Images .tif d'une base de donnée Postgres.
A l'aide de la fonction pg_lo_export j'ai pu importer de la base de donnée le fichier image sur le serveur local mais le problème est que le fichier est illisible (il n'est pas supporté par les logiciels que j'utilise habituellement pour lire les tif) et affiche le massage suivant "Format spécifié non valide ou non pris en charge" alors que j'utilise un logiciel qui supporte le tif sans problémes.
et voici le code que j'ai utilisé.
<?php 
/*connection a la base*/
  $con=pg_connect("host=192.168.2.56 port=5433 dbname=mabase user=utilisateur password=mon_passwpord"); 
   pg_query($con, "begin");
   $oid = 21387;    //l'oid du fichier image
   echo "$oid\n";   // afficher l'oid 
   $handle = pg_lo_open($con, $oid, "w"); //Ouvre un objet de grande taille PostgreSQL 
   pg_lo_write($handle, "données objet de grande taille");  //Ecrit un objet de grande taille PostgreSQL 
   pg_lo_close($handle);//Ferme un objet de grande taille PostgreSQL 
   pg_lo_export($con, $oid,'C:/test/image86.tif'); //Exporte un objet de grande taille vers un fichier 
   pg_query($con, "commit");
	echo '<a href="file:///C|/test/image86.tif">cliquer ici</a>'; ?>


D'où vient d'après vous la Faille. Merci


A voir également:

1 réponse

François
 
Au vu de ton code, je ne suis pas sûr du tout que l'image soit stockée dans ta table !
A mon avis la table contient 'données objet de grande taille'
tu devrais vérifier le contenu de ton champ (tu devrais y voir du code binaire).

Pour pg_lo_import...
Pour ce genre d'opération il est très recommandé de tester la valeur retournée par la commande "pg_lo_write()".

Pour pg_lo_export...
1- D'après la doc php, le 3e argument est le path du fichier qui contiendra les données issue de la table. OUI, MAIS LE FICHIER EST VU DU COTE SERVEUR ! à priori php ne connais pas c:\test....
Tu dois donner un chemin relatif par exemple temp_rep/temp_image.tif et le lien à donner au client (navigateur) serait
<a href='temp/temp_image.tif'>image</a>

2- Pour ce genre d'opération il est très recommandé de tester la valeur retournée par la commande "pg_lo_export()".


Bref il ne faut pas hésiter à consulter la doc PHP, et les exemples sont parlant !
0
asdeejay Messages postés 9 Statut Membre
 
bonjour:
j'essaye de d'ouvrir le fichier déjà importé de la base directement, pas dans une page web, oublions le
<a href='temp/temp_image.tif'>image</a> j'ai suivi l'exemple exactement ça ne s'ouvre pas même pas avec un éditeur d'images .tif je ne comprend pas qu'est ce qui cloche.

j'ai essayé le lo_read_all aussi le contenu s'affiche sur la page web mais en chaîne de caractères, il faut connaître l'entête adéquate comment faire.
je suis dans une impasse. :(
0