Il est intéressant de reprendre la suggestion précédente en créant un gestionnaire générique appelé par exemple SqlImage.ashx.
Ce gestionnaire prendrait en paramètres d'entrée en querystring les infos nécessaires pour retrouver l'image dans la base. Ce pourrait être par exemple un ID... Bref, à voir selon les besoins.
Ainsi, l'url d'une image serait par exemple :
http://www.monsite.com/SqlImage.ashx?id=12541
Du coup, cette url peut être utilisée directement dans une balise serveur
<asp:Image id="imglogo" runat="server" ImageUrl="http://www.monsite.com/SqlImage.ashx?id=12541"/>
Ou encore via du code (suite à un click bouton par exemple)
imgLogo.ImageUrl = "http://www.monsite.com/SqlImage.ashx?id=12541" + id.ToString();
Il suffit de coder la méthode ProcessRequest du gestionnaire.
1) Connexion à la base
2) Requête SQL
3) Renvoyer le tout via context.Response
4) Penser à définir context.Response.ContentType
Cela fonctionne très bien et c'est super pratique. On peut ainsi écrire des gestionnaires pour récupérer des images en provenance de toutes sortes de sources. En plus, pourquoi pas rajoutrer à la volée les copyrights sur l'image !!! Si on pense à gérer le cache on peut aussi optimiser les traitements serveur.
Bon courage.
Partager