Afficher les images stockées dans un champ BLOB

Version du produit d’origine : Internet Information Services
Numéro de la base de connaissances d’origine : 173308

Résumé

À l’aide d’ASP (Active Server Pages), vous pouvez afficher les images stockées dans les champs BLOB (Binary Large Object) dans votre navigateur Internet. Cet article fournit des informations sur l’affichage d’une image GIF stockée dans l’exemple de table de base de données Microsoft SQL Server pub_info.

Informations supplémentaires

La plupart des navigateurs Internet prennent en charge l’affichage d’images GIF et JPEG. Pour afficher une image, le navigateur demande l’image à partir d’un serveur Web. Le serveur transmet l’image au navigateur en tant que transaction HTTP avec un en-tête HTTP contenant un type MIME de IMAGE/GIF ou IMAGE/JPEG. Vous pouvez simuler ce comportement avec Active Server Pages.

L’exemple suivant construit un en-tête HTTP pour une image, puis utilise les informations binaires d’un champ d’image dans SQL Server pour fournir un gif au navigateur.

 FILE: SHOWIMG.ASP
 <%@ LANGUAGE="VBSCRIPT" %>
 <%
 ' Clear out the existing HTTP header information
 Response.Expires = 0
 Response.Buffer = TRUE
 Response.Clear

' Change the HTTP header to reflect that an image is being passed.
 Response.ContentType = "image/gif"

Set cn = Server.CreateObject("ADODB.Connection")
 ' The following open line assumes you have set up a System DataSource
 ' by the name of myDSN.
 ' Remember to change the following connection string parameters to reflect the correct values
 ' for your SQL server.
 cn.Open "DSN=myDSN;UID=<username>;PWD=<strong password>;DATABASE=pubs"
 Set rs = cn.Execute("SELECT logo FROM pub_info WHERE pub_id='0736'")
 Response.BinaryWrite rs("logo")
 Response.End
 %>

Ce script affiche uniquement une image à l’écran. Si vous souhaitez afficher une image à partir d’un document HTML ou ASP, vous devez faire référence à ce script dans une balise d’image. Par exemple, si vous souhaitez afficher cette image avec un légende la décrivant, vous pouvez utiliser la page HTML suivante :

 <HTML>
     <HEAD><TITLE>Display Image</TITLE></HEAD>
     <BODY>
         This page will display the image New Moon Books from a SQL Server
         image field.<BR>
         <IMG SRC="SHOWIMG.ASP">
     </BODY>
 </HTML>

Remarque

Le script ASP suppose que le champ d’image (données BLOB) dans la table SQL Server contient une image GIF brute. Les navigateurs Internet supposent que les données GIF ou JPEG brutes suivent l’en-tête HTTP. Si des informations superflues sont contenues dans les données BLOB, celles-ci sont transmises par ce script et l’image ne s’affiche pas correctement. Cela devient important lorsque vous vous rendez compte que la plupart des méthodes de placement d’images dans des champs BLOB placent des informations supplémentaires sous la forme d’en-têtes avec l’image. Microsoft Access et Microsoft Visual FoxPro en sont des exemples. Ces deux applications enregistrent les en-têtes OLE dans le champ BLOB, ainsi que les données binaires réelles.

Cette technique peut également être appliquée à d’autres types de données binaires, et pas seulement aux graphiques. Le navigateur doit savoir quel type de contenu est présenté. Pour ce faire, spécifiez le type mime approprié dans la variable Response.ContentType. Par exemple, si vous souhaitez afficher un document word, vous devez définir contentType = « application/msword ».

References

Pour obtenir les derniers articles de la Base de connaissances et d’autres informations de support sur Visual InterDev et les pages Active Server, consultez Prise en charge de Visual InterDev.