Foros del Web » Programando para Internet » ASP Clásico »

Mostrar imagen de una BD en el navegador

Estas en el tema de Mostrar imagen de una BD en el navegador en el foro de ASP Clásico en Foros del Web. Hola a todos..... Voy directo al grano: Tengo almacenadas algunas imagenes en una BD de SQL, como datos binarios...ahora necesito recuperarlas y mostrarlas en el ...
  #1 (permalink)  
Antiguo 15/09/2006, 11:27
 
Fecha de Ingreso: febrero-2005
Mensajes: 29
Antigüedad: 19 años, 3 meses
Puntos: 0
Mostrar imagen de una BD en el navegador

Hola a todos.....

Voy directo al grano: Tengo almacenadas algunas imagenes en una BD de SQL, como datos binarios...ahora necesito recuperarlas y mostrarlas en el navegador.....

Estoy utilizando el siguiente código:

'Recordset
Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")

'abrimos la conexion
rs.Open "select [foto],[tipo_img] from fotos where id_foto = " & ID, Con, 2, 4

If Not rs.EOF Then
Response.ContentType = rs("tipo_img")
Response.BinaryWrite rs("foto")
Else
Response.write ("<b><font color='red'>")
Response.write ("ERROR:</font><br>No se ha ")
Response.write ("encontrado el fichero solicitado</b>")
End If
rs.Close
Set rs = Nothing

en el campo "tipo_imagen" almaceno image/gif. A la hora de correr ese código, muestra basura........EJ:

GIF89a¤y÷€€€€€€€€€€€€ÀÀÀÿÿÿÿÿÿÿÿÿÿÿÿ3f™Ìÿ3333f3™3Ì 3ÿff3fff™fÌfÿ™™3™f™™™Ì™ÿÌÌ3ÌfÌ™ÌÌÌÿÿÿ3ÿfÿ™ÿÌÿÿ3333 f3™3Ì3ÿ3333333f33™33Ì33ÿ3f3f33ff3f™3fÌ3fÿ3™3™33™f3 ™™3™Ì3™ÿ3Ì3Ì33Ìf3Ì™3ÌÌ3Ìÿ3ÿ3ÿ33ÿf3ÿ™3ÿÌ3ÿÿff3fff™f Ìfÿf3f33f3ff3™f3Ìf3ÿffff3fffff™ffÌffÿf™f™3f™ff™™f™ Ìf™ÿfÌfÌ3.
.
.
.

no se si lo estoy haciendo mal, agradecería su ayuda.....notaron que me esmeré en el código
  #2 (permalink)  
Antiguo 18/09/2006, 11:53
 
Fecha de Ingreso: febrero-2005
Mensajes: 29
Antigüedad: 19 años, 3 meses
Puntos: 0
aún no queda

Sigo sin resolverlo amigos....pero no se qué más revisarle...pues el código está bien....
  #3 (permalink)  
Antiguo 18/09/2006, 12:15
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Yo creo que estás teniendo un error conceptual (digo por los responseS.writeS que tenés por allí)

La idea de esto es hacer sólo el Response.BinaryWrite en un archivo (llamémoslo imagen.asp) que deberá ser llamado desde otro archivo mediante el atributo SRC de un tag IMG. Uf... que lío. Mejor voy con un ejemplo que ando un poco espeso hoy

archivo imagen.asp:
Código:
'Recordset
ID = Request.QueryString("ID")

Dim rs
Set rs = Server.CreateObject("ADODB.Recordset")

'abrimos la conexion
rs.Open "select [foto],[tipo_img] from fotos where id_foto = " & ID, Con, 2, 4

If Not rs.EOF Then
Response.ContentType = rs("tipo_img")
Response.BinaryWrite rs("foto")
'Else
response.redirect "imagen_no_disponible.gif"
End If
rs.Close
Set rs = Nothing
Luego, donde quieras mostrar la imagen, colocás:

Código:
<img src="imagen.asp?ID<% = Rs("id_foto") %>" />
Nunca lo usé con ASP, pero si con PHP. Pero la "filosofía" es la misma.
__________________
...___...
  #4 (permalink)  
Antiguo 18/09/2006, 12:53
 
Fecha de Ingreso: febrero-2005
Mensajes: 29
Antigüedad: 19 años, 3 meses
Puntos: 0
no funcionó...

Estimado Al Zuwaga...

Le quité los ResponseS.WriteS que tenía y hace exactamente lo mismo...me sigue arrojando basura......

Le seguiré buscando el error.... más bien DETALLE, pues no creo que sea un error...
  #5 (permalink)  
Antiguo 18/09/2006, 14:31
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Response.Buffer = True
Response.ContentType = rs("tipo_img")

¿Que tienes en rs("tipo_img")?
  #6 (permalink)  
Antiguo 18/09/2006, 16:26
 
Fecha de Ingreso: febrero-2005
Mensajes: 29
Antigüedad: 19 años, 3 meses
Puntos: 0
Estimado Myakire:

En ese campo de mi BD, almaceno el valor de ContentType que es "image/gif", por ahora pero debe ser igual si deseo una jpg "image/pjpeg".

rs("tipo_img")="image/gif"...
  #7 (permalink)  
Antiguo 19/09/2006, 10:48
 
Fecha de Ingreso: febrero-2005
Mensajes: 29
Antigüedad: 19 años, 3 meses
Puntos: 0
creeran que aún no???

Pues todavía no encuentro el detalle de esa página...

Alguién sabrá qué pasa con ella????

HELP, HELP
  #8 (permalink)  
Antiguo 19/09/2006, 10:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Fuck! Tendré que hacer pruebas... nunca manipulé binarios desde una BD con ASP. Dejá que pruebo y te comento.
__________________
...___...
  #9 (permalink)  
Antiguo 19/09/2006, 11:23
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
No creo que el problema sea el mètodo de depsliegue, quizà como lo guarda.

Este código yo lo tengo en producción:

Cita:
<%
Response.Buffer = True
connStr = "Driver={SQL Server};SERVER=xx.xx.xx.xx; DATABASE=xxx;UID=xxx;PWD=xxx"

ID = Request("ID")

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "select [Curriculum],[Tipo] from Proveedores_Curriculums where Id_Prov = " & ID, connStr, 2, 4

If Not rs.EOF Then
Response.ContentType = rs("Tipo")
Response.BinaryWrite rs("Curriculum")
Else
Response.write "<b><font color=""red"">ERROR:</font><br>No se ha encontrado el curriculum solicitado</b>"
End If
rs.Close
Set rs = Nothing
%>
  #10 (permalink)  
Antiguo 19/09/2006, 12:03
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Efectivamente, el problema es el método que usa para guardar el archivo en la BD. Estoy casi seguro que lo que hacés, herb_ore, es copiar el archivo y pegarlo dentro de la vista de datos de la BD access (o click derecho e "insertar objeto" directamente en el campo objeto olé)

En la siguiente imagen se ve cómo queda la tabla en la vista datos con los dos procedimientos:


En rojo, con el procedimiento que describí más arriba, y en verde almacenando la imagen mediante ASP.

¿Qué ocurre? Que access le mandó "esto" al inicio del contenido binario del archivo:

Código:
$ÿÿÿÿPaquetePackagePackageú0foto.gifC:\Inetpub\pruebas\foto.gifC:\Inetpub\pruebas\foto.gif¤
Almacenando las imágenes mediante ASP, siguiendo los pasos de este tutorial, no tuve ningún problema a la hora de visualizar las imágenes.
__________________
...___...
  #11 (permalink)  
Antiguo 19/09/2006, 12:12
 
Fecha de Ingreso: febrero-2005
Mensajes: 29
Antigüedad: 19 años, 3 meses
Puntos: 0
forma de guardar...

Estimado Myakire:

Es casi el mismo código.....busqué la forma de guardar datos binarios y encontré una clase muy comentada, creo que en este foro la comentan, llamada xelupload.asp, con esa clase es con la que se guardan los datos....

Si como dices, es la forma de guardarlo; entonces el problema debe estar en esa clase (aunque si tuviera algún problema, no guardara nada y en la BD si se almacena)...no se cuál es la forma en que lo guardas tú, es decir, la clase que usas....etc....

De antemano, Gracias.....
  #12 (permalink)  
Antiguo 19/09/2006, 12:28
 
Fecha de Ingreso: febrero-2005
Mensajes: 29
Antigüedad: 19 años, 3 meses
Puntos: 0
seguiré los pasos...

Veré el tutorial Al Zuwaga. Estoy usando una BD de SQL Server...y en el campo aparece "<Datos binarios>"

Veré el tutorial....
  #13 (permalink)  
Antiguo 19/09/2006, 12:34
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
¿y de dónde saqué yo que usabas access?
Juraría que en tu primer mensaje vi una cadena de conexión a un MDB, pero parece que me confundí
__________________
...___...
  #14 (permalink)  
Antiguo 19/09/2006, 13:02
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
Este códifo igual esta en produccón y es con SQL Server:


Cita:
<%
Server.ScriptTimeOut = 25000
%>
<!-- #include file="admin/xelupload.asp"-->
<html><head>
<title>Resumen del archivos agregados al expediente</title>
<link href="estilo.css" type="text/css" rel="stylesheet" />
<script language="javascript" src="xp_progress.js"></script>
<script>
function ModificaPopup(){
window.resizeTo(350,450)
self.focus()
}
</script>

</head><body onUnload="alert('Se actualizará la pantalla');opener.location.reload();">
<script>ModificaPopup();</script>
<%
maxtam = 15 * 1024

Dim up, fich
set up = new xelUpload
up.Upload()

if IsEmpty(vMensaje) Then vMensaje=" " End If

if up.Ficheros.Count > 0 then
set fich = up.Ficheros("Curriculum")

Response.Write("<div id=""mensaje"" class=""Text"">Número de archivos en proceso: " & up.Ficheros.Count & "<hr>")
Response.Write("</div><div class=""smallText"" align=""center"">")
Response.Write "<script>var bar2=createBar(250,16,'orange',1,'orange','white', 45,15,0,'');</script>"
Response.Flush
i=1

Response.Write("<ul>")
Response.Write("<li>Nombre: <b>" & fich.Nombre & "</b></li>")
Response.Write("<li>Tamaño: <b>" & fich.Tamano & "</b> bytes (" & FormatNumber(fich.Tamano / (1024*1024)) & " Mb)</li>")
Response.Write("<li>Tipo de Archivo: <b>" & fich.TipoContenido & "</b></li>")
Response.Write("</ul>")

connStr = "Driver={SQL Server};SERVER=xx.xx.xx.xx; DATABASE=xxx;UID=xxx;PWD=xxx"
Set adoRs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT Id_Prov, NomArchivo,Tamano,Tipo,Curriculum from Proveedores_Curriculums where Id_Prov = " & Session("IdProveedor")
adoRs.Open SQL, connStr, 2, 2
if adoRs.EOF Then
adoRs.AddNew
End if
adoRs("Id_Prov") = Session("IdProveedor")
adoRs("NomArchivo") = fich.Nombre
adoRs("Tamano") = fich.Tamano/1024
adoRs("Tipo") = fich.TipoContenido
fich.GuardarBD adoRs("Curriculum") 'Campo Image en SQL-Server
adoRs.Update

adoRs.Close
Set adoRs = Nothing

End If
  #15 (permalink)  
Antiguo 19/09/2006, 14:09
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Que feo codigo! nah es pura broma...
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #16 (permalink)  
Antiguo 20/09/2006, 17:55
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 22 años, 4 meses
Puntos: 146
jejeje, a la otra no lo voy a "embellecer" para que veas código feo de verdad
  #17 (permalink)  
Antiguo 20/09/2006, 19:08
 
Fecha de Ingreso: febrero-2005
Mensajes: 29
Antigüedad: 19 años, 3 meses
Puntos: 0
Ya mostró las imagenes...........

Myakire, ese último código que pusiste, el que tenía era similar (personalizado), pero mostraba los datos basura....de cualquier forma, se agradece.

Al Zuwaga, ese tutorial está perfecto...me basé de ahí y no dio problemas...

Gracias....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:46.