Exibir imagens armazenadas em um campo BLOB

Versão original do produto: Serviços de Informações da Internet
Número de KB original: 173308

Resumo

Usando ASP (Active Server Pages), você pode exibir imagens armazenadas em campos BLOB (Objeto Grande Binário) no navegador da Internet. Este artigo fornece informações sobre como exibir uma imagem GIF armazenada na pub_info de tabela de banco de dados de exemplo do Microsoft SQL Server.

Mais informações

A maioria dos navegadores da Internet dá suporte à exibição de imagens GIF e JPEG. Para exibir uma imagem, o navegador solicita a imagem de um servidor Web. O servidor passa a imagem para o navegador como uma transação HTTP com um cabeçalho HTTP contendo um tipo MIME de IMAGE/GIF ou IMAGE/JPEG. Você pode simular esse comportamento com Páginas do Servidor Ativo.

O exemplo a seguir constrói um cabeçalho HTTP para uma imagem e, em seguida, usa as informações binárias de um campo de imagem em SQL Server para fornecer um GIF ao navegador.

 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
 %>

Esse script exibe apenas uma imagem na tela. Se você deseja exibir uma imagem de um documento HTML ou ASP, você deve se referir a esse script em uma marca de imagem. Por exemplo, se você quiser exibir essa imagem com um legenda descrevendo-a, poderá usar a seguinte página HTML:

 <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>

Observação

O script ASP pressupõe que o campo de imagem (Dados BLOB) na tabela SQL Server contém uma imagem GIF bruta. Os navegadores da Internet assumem que os dados GIF brutos ou JPEG seguem o cabeçalho HTTP. Se alguma informação extraneous estiver contida nos dados blob, isso será passado por este script e a imagem não será exibida corretamente. Isso se torna importante quando você percebe que a maioria dos métodos de colocar imagens em campos BLOB colocam informações extras na forma de cabeçalhos com a imagem. Exemplos disso são o Microsoft Access e o Microsoft Visual FoxPro. Ambos os aplicativos salvam cabeçalhos OLE no campo BLOB junto com os dados binários reais.

Essa técnica também pode ser aplicada a outros tipos de dados binários, não apenas a elementos gráficos. O navegador precisa saber que tipo de conteúdo está sendo apresentado. Faça isso especificando o tipo de mime adequado na variável Response.ContentType. Por exemplo, se você quisesse exibir um documento de palavra, definiria o ContentType = "application/msword".

Referências

Para ver os artigos mais recentes da Base de Dados de Conhecimento e outras informações de suporte nas Páginas do Visual InterDev e do Active Server, confira Suporte ao Visual InterDev.