PHP, images et base de données

Salut à tous,

Comme le titre l’indique, j’ai besoin d’insérer des image issue d’une base de données (LDAP, mais osef). Trois façon de le faire me viennent à l’esprit (si vous en voyez une autre faites m’en part) et je me demande quelle est la meilleure ?

1ere façon :
Une page/script principal extrait les images de la base et les enregistres temporairement sur le disque dur. Les images sont insérées comme ceci : . image.php est un second script qui lit le fichier sur le dur, et l’affiche. On doit alors passer par ce script car les images sont dans un répertoire temporaire ( genre /tmp ) non accessible à apache.

inconvénient : on doit écrire sur le disque, ce qui entraîne des problèmes de sécurité et de performance.

2eme façon :
Les images sont toujours insérées comme ceci : , mais le script va chercher directement l’image dans la base de données.

inconvénient : on doit refaire une connexion à la base pour chaque image ce qui est mauvais pour les perf.

3ème façon :
En utilisant la définition inline des images. c’est à dire la notation suivante :

ou :
<object type=“image/jpeg” height="100 width="100"
data="data:image/jpeg;base64,/9j/4AAQSkZJRg… données base64… ">

Cette notation permettrait d’afficher les images avec un seul script et une seule connexion à la base, MAIS ça ne marche pas :P( ie n’affiche qu’une croix … POURQUOI ?

Moi je conseille le cache dans un repertoire temporaire. Mais dans un rep dedie avec des droits specifiques faciles pour php/apache. Si c’est bien fait c’est pas sale et ca permet d’avoir des bonnes perfs. Maintenant il faut voir quelle est ta politique pour invalider le cache et les contraintes que tu as dessus…
Ce message a été édité par GloP le 07/04/2004

Si c’est pour répondre à une demande d’un utilisateur, pourquoi ne pas attacher l’image à la session ?

Comme ca l’image est stockée par le session manager (fichier, base de données…), et est transmis directement à l’utilisateur.

Ca règle aussi le problème du garbage collector, les sessions ayant une certaine durée de vie.

[quote]Moi je conseille le cache dans un repertoire temporaire. Mais dans un rep dedie avec des droits specifiques faciles pour php/apache. Si c’est bien fait c’est pas sale et ca permet d’avoir des bonnes perfs. Maintenant il faut voir quelle est ta politique pour invalider le cache et les contraintes que tu as dessus…
Ce message a été édité par GloP le 07/04/2004[/quote]C’est comme ça que ça marche actuellement, mais ça m’embetait car sur le serveur de test, apache n’est pas sécurisé (install par défaut), mais bon, je verifie bien que l’on envoie une image (je teste la taille de l’image (en pixel), si c’est pas un jpeg ça renvoie false).

Merci du conseil !

[quote]Si c’est pour répondre à une demande d’un utilisateur, pourquoi ne pas attacher l’image à la session[/quote]Alors, la j’ai pas compris. Si on met l’image dans une variable de session comment on la fait s’afficher dans le naviguateur ?

Sinon, je repose encore ma question subsidiaire : comment afficher une image inline , c’est a dire avec les information directement dans le fichier HTML et pas dans un fichier .jpg séparé. Je crois que c’est possible, mais aucun de mes essais n’a fonctionné … snif

edit : petite connerie
Ce message a été édité par Kane–sama le 07/04/2004

[quote]Sinon, je repose encore ma question subsidiaire : comment afficher une image inline , c’est a dire avec les information directement dans le fichier HTML et pas dans un fichier .jpg séparé. Je crois que c’est possible, mais aucun de mes essais n’a fonctionné … snif[/quote]Envoies toi une image par mail dans un mail HTML cree par outlook express et fais un view source. Je pense que c’est comme ca qu’il genere le mail.

[quote]Envoies toi une image par mail dans un mail HTML cree par outlook express et fais un view source. Je pense que c’est comme ca qu’il genere le mail.[/quote]Je viens d’essayer il la crée au format MIME (Multipurpose Internet Mail Extensions), et outlook ne met pas l’image dans la partie HTML du message.

merci quand même.

Dans ce message HotLine > Signature dans Outlook Express (image en ligne) ça fonctionne pourtant.

C’est effectivement du MIME mais dans le même message MIME ce n’est pas un lien sur l’image mais bien le binaire de l’image (base64 ou binhex je ne me souviens plus).

Il faut bien que tu stockes ton image quelque part.

Sinon va sur www.c2i.fr - Le premier portail .net et recherche dans le site la méthode pour faire un blog.aspx avec de l’XML. Si je me souviens je pense que la méthodé utilisé pour les images n’est pas spécfique .net (aspx).