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

Una pregunta poco usual ...

Estas en el tema de Una pregunta poco usual ... en el foro de ASP Clásico en Foros del Web. Que mas muchachos y muchachas del foro ASP ... Antes de preguntar, primero planteo el problema: El asunto es que una base de datos con ...
  #1 (permalink)  
Antiguo 18/08/2002, 19:50
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Una pregunta poco usual ...

Que mas muchachos y muchachas del foro ASP ...
Antes de preguntar, primero planteo el problema:
El asunto es que una base de datos con varios campos, entre los cuales hay un campo de tipo OLE, el cual almacena una foto de formato JPG (almacena la foto y no la dirección de la foto); este campo no es requerido y por lo tanto, no siempre etará presente; el problema es que no se como especificar si el campo OLE está vacío o no, (Por ejemplo, para un campo texto basta con la siguiente sintanxis para establecer se está vacío o no: "if campo_texto <> "" then ... ... ... else ... ... ... end if" ) yo en mi código coloqué lo siguiente:

<% if oRs.fields("usufot").value <> 0 then
%> <img border="0" src="<%= oRs.fields("usufot").value %>" hspace="5" vspace="5">
<% else
response.write("No hay foto")
end if
%>

Pero como se podrán imaginar, no funciona.

Si alguien sabe lo que sucede, agradecería mucho su ayuda, pues es de carácter urgente y realmente he probado todo.

Agradesco de antemano a todos los usuarios y estoy en espera y atento.



Jean Joel
  #2 (permalink)  
Antiguo 18/08/2002, 20:20
 
Fecha de Ingreso: enero-2002
Mensajes: 217
Antigüedad: 23 años, 4 meses
Puntos: 0
Re: Una pregunta poco usual ...

Aqui, siempre se ha aconsejado no poner las fotos en la base si no mas bien solo la URL, y si fuere de esa manera tu pregunta ya no tendría fin pues ya la tienes respondida...

el campo de la url es un campo texto y luego si esta vacio, "No hay Foto"

Saludos


<img src="http://www.univercity.cl/imagenes/malex6.gif">
  #3 (permalink)  
Antiguo 18/08/2002, 20:33
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Malex6, te agradesco el consejo, y de verdad que lo tengo en cuenta en caso que no halla otra solución, pero la verdad es que soy fanático de dejar lo menos posible fuera de las bases de datos, pues de aqui se pueden controlar mejor los datos (si lo dejo en una carpeta del servidor, esta se podría borrar fácilmente sin borrar el registro que lo direcciona).

De todas maneras, aún sigo atento a cualquier mensaje.

Gracias Malex6 por tu rapidez y servicio.



Jean Joel
  #4 (permalink)  
Antiguo 18/08/2002, 21:04
 
Fecha de Ingreso: enero-2002
Mensajes: 217
Antigüedad: 23 años, 4 meses
Puntos: 0
Re: Una pregunta poco usual ...

Ok. me parece muy respetable, pero no se te hace pesada la Base con fotos?




<img src="http://www.univercity.cl/imagenes/malex6.gif">
  #5 (permalink)  
Antiguo 18/08/2002, 21:42
Avatar de ElAprendiz  
Fecha de Ingreso: enero-2002
Ubicación: Maipu, Chile
Mensajes: 3.706
Antigüedad: 23 años, 3 meses
Puntos: 2
Re: Una pregunta poco usual ...

dame tu mail..tengo una una aplicacion de vgaray que almacena una imagen en la bdd

<center><IMG SRC="http://www.550m.com/usuarios/altolacruz/aprendiz3.gif" ALT="Visitame en AlSurNet.com -- E-Learning E-Commerce Multimedia E-Business--"></center>
  #6 (permalink)  
Antiguo 19/08/2002, 03:08
 
Fecha de Ingreso: mayo-2002
Mensajes: 83
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Hola...no se que BD estas usando..
bueno..con respecto a lo de malex6...depende del tamaño de las fotos...
por ejemplo yo en una bd access con 200 imagenes jpg..capturadas de una webcam no pesa mas de 3.2 mb ...

jean joel...prueba esto...
Código:
  
&lt;!-- #include file=&quot;Adovbs.inc&quot; --&gt;
&lt;%
 mQueryString = &quot;SELECT * FROM imagen where Id=&quot;&amp;codigo
 Set objConn = Server.CreateObject(&quot;ADODB.Connection&quot;)
 objConn.CursorLocation = adUseClient
 objConn.Open &quot;PROVIDER=Microsoft.Jet.OLEDB.4.0;&quot; &amp; &quot;Data Source=C:/BDC.mdb;&quot;
 Set objCmd = Server.CreateObject(&quot;ADODB.Command&quot;)
 objCmd.ActiveConnection = objConn
 objCmd.CommandText = mQueryString
 objCmd.CommandType = adCmdText
 Set objRS = Server.CreateObject(&quot;ADODB.Recordset&quot;)
 objRS.Open objCmd, , adOpenKeySet, adLockPessimistic
 IF objRS.EOF Then
%&gt;
&lt;html&gt;
&lt;head&gt;
&lt;/head&gt;
&lt;body bgcolor=&quot;royalblue&quot;&gt;
&lt;script&gt;
alert(&quot;No hay imagen para este Codigo..&quot;)
window.location.replace(&quot;imagenesC.asp?Cod=200&quot;)   
&lt;/script&gt;
&lt;%    
  Response.end
 else
  SetImgForDisp objRS.fields(&quot;Foto&quot;), &quot;jpeg&quot;
%&gt;
&lt;table border=&quot;1&quot; width=&quot;75%&quot; cellspacing=&quot;0&quot; cellpadding=&quot;0&quot;&gt;
   &lt;tr&gt;
     &lt;td width=&quot;20%&quot; valign=&quot;center&quot;&gt;
      &lt;p align=&quot;center&quot;&gt;&lt;IMG height=240 src=&quot;ImagenProxy.asp&quot; width=320&gt;
	&lt;/p&gt;&lt;/td&gt;
   &lt;/tr&gt;
bueno no es todo el codigo..pero es para que pruebes la parte que necesitas...
espero que sirva...chausito
  #7 (permalink)  
Antiguo 19/08/2002, 15:49
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Ok, les agradesco a todos el interés.

Para ElAprendiz , mi correo es [email protected] . Creo que me interesaría la aplicación que dices y te agradesco el gesto de enviármelo.

Para Yoston , tu código lo que hace es mostrar una imágen, y verifica que el registro no esté vacío (Que no sea fin de archivo EOF); la verdad, es que no tengo problema al mostrar la imágen, el problema es que no se como verificar si el campo de imágen (el campo y no el registro completo) se encuentra vacío. Cito de nuevo el ejemplo:

Para verificar si un campo de texto está vacío, basta con las siguientes líneas de código:

IF RS.FIELDS(&quot;CAMPO_TEXTO) &lt;&gt; &quot;&quot; THEN
'EJECUTA SI NO ESTÁ VACÍO
ELSE
'EJECUTA SI ESTÁVACÍO
END IF


Mi problema es que no se con que comparar el campo imágen para ver si existe o no existe (vacío o no):

IF RS.FIELDS(&quot;CAMPO_IMAGEN_OLE&quot;) &lt;&gt; ????? THEN
'EJECUTA SI HAY IMÁGEN
ELSE
'EJECUTA SI NO HAY IMÁGEN
END IF


En donde están los interrogantes, es donde no se que colocar. Si alguien sabe, le agradecería me ayudara.

Gracias Yoston, ElAprendiz y Malex6 por su colaboración.

Sigo atento y en espera de cualquier ayuda. Gracias.



Jean Joel
  #8 (permalink)  
Antiguo 19/08/2002, 16:26
 
Fecha de Ingreso: mayo-2002
Mensajes: 83
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Hola mira intenta con esto..

'response.write objRS(&quot;Foto&quot;).ActualSize
'tamaño actual del objeto OLE
IF objRS(&quot;Foto&quot;).ActualSize &gt; 0 Then
%&gt;
hay imagen...
&lt;%else%&gt;
no hay imagen...
&lt;%end if%&gt;

espero que te sirva....
:cantar:
chausito
  #9 (permalink)  
Antiguo 19/08/2002, 17:09
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Yoston, te cuento que el método ActualSize funciona a la perfección, ya no muestra error en ningún lado.

Ahora tengo un problema al mostrar la foto, pero lo intentaré por otro lado (response.binarywrite) y despues posteo que pasa.

Gracias por tu ayuda Yoston, de verdad que eres muy bueno.




Jean Joel
  #10 (permalink)  
Antiguo 19/08/2002, 17:53
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Hola de nuevo, El problema ahora es que no muestra la imágen, estoy ulilizando el siguiente código:

&lt;td width=&quot;50%&quot; rowspan=&quot;5&quot; height=&quot;179&quot; valign=center align=center&gt;&lt;%
if oRs.fields(&quot;usufot&quot;).ActualSize &lt;&gt; 0 then
response.ContentType = &quot;image/jpeg&quot;
response.binarywrite oRs.fields(&quot;usufot&quot;)
else
response.write(&quot;Foto No Disponible&quot;)
end if
%&gt;


Lo que hace es escribir el código binario en la celda, y no dibujar la foto, que es lo que quiero.

Si alguien sabe que estoy haciendo mal ...

Espero atento a cualquier ayuda ...



Jean Joel
  #11 (permalink)  
Antiguo 19/08/2002, 18:05
 
Fecha de Ingreso: mayo-2002
Mensajes: 83
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Hola
intenta con esto....

&lt;&lt;muestaimagen.asp&gt;&gt;

aca esta el if..que tu haces

if..
---&gt;no hay imagen
else
SetImgForDisp objRS.fields(&quot;Foto&quot;), &quot;jpeg&quot;

&lt;img src=&quot;Imagen.asp&quot; width=&quot;320&quot; height=&quot;240&quot;&gt;

response.End
end if


Function SetImgForDisp(inField, inContentType)
Dim mOleHeadSize, mBytes
Dim mFieldSize, mDumpaway
mOleHeadSize = 78
inContentType = LCase(inContentType)
Select Case inContentType
Case &quot;gif&quot;, &quot;jpeg&quot;, &quot;bmp&quot;
inContentType = &quot;image/&quot; &amp; inContentType
mBytes = inField.value

Case &quot;ole&quot;
inContentType = &quot;image/bmp&quot;
mFieldSize = inField.ActualSize
mDumpaway = inField.GetChunk(mOleHeadSize)
mBytes = inField.GetChunk(mFieldSize - mOleHeadSize)
End Select
Session(&quot;ImageBytes&quot;) = mBytes
Session(&quot;ImageType&quot;) = inContentType
End Function


y esta pagina te sirve como un proxy...(patrones..)

&lt;&lt;imagen.asp&gt;&gt;

&lt;%
response.Expires = 0
response.Buffer = True
response.Clear

response.contentType = Session(&quot;ImageType&quot;)
response.BinaryWrite Session(&quot;ImageBytes&quot;)

Session(&quot;ImageType&quot;) = &quot;&quot;
Session(&quot;ImageBytes&quot;) = &quot;&quot;

response.End
%&gt;

ojala te sirva.... :cantar:
chausito
  #12 (permalink)  
Antiguo 19/08/2002, 18:28
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Ok gracias, esto funciona, pero el problema es que funciona si solo muestro la imagen, pero si además de la imágen intento mostras otros campos de la bd, entonces ya no me muestra la imágen, sino el contenido binario del archivo .

El problema es que necesito mostrar como unos 9 campos en la misma página (incluyendo el campo de la foto), estos campos se muestran en una tabla.

Pues bien si alguien conoce solución de esto ... Estaré esperando.



Jean Joel
  #13 (permalink)  
Antiguo 19/08/2002, 19:13
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Yoston, lo siento, pero lo que dije en el anterior comentario, puede que no sea cierto.

Pues me he dado cuenta que aunque ya cambié los archivos en el servidor, al realizar la petición me da la página que tenía anteriormente, es como si no hubiera remplazado los archivos.

ya eliminé los archivos temporales en mi equipo, reinicié el equipo y aún me sigue leyendo el archivo antiguo.

Es como si el archivo hubiera quedado en el bufer o en memoria del servidor (hosting).

No se como pueda solucionar esto, si alguien cono ce este problema y sabe como solucionarlo, le agradecería mucho.



Jean Joel
  #14 (permalink)  
Antiguo 19/08/2002, 20:19
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Yoston, hice el código como digite pero la imágen no se muestra.

Mira la página aqui:

<a href='ir.asp?http://www.centroabastos.com.co/prb/local1.asp?id=0083' target='_blank'>http://www.centroabastos.com.co/prb/loca...</a>

Si puedes, dame tu E-mail y te mando el archivo a ver que estoy haciendo mal.

Disculpenme tanta molestia, pero la duda no me deja tranquilo.



Jean Joel
  #15 (permalink)  
Antiguo 19/08/2002, 23:41
 
Fecha de Ingreso: mayo-2002
Mensajes: 83
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Mira lo que entiendo es que te muestra la misma imagen es decir como que no actualiza la siguiente imagen...
bueno lo que yo hago es esto:

&lt;&lt;Mostrarimagen.asp&gt;&gt;
sub redir(codigo)
%&gt;
&lt;script language=&quot;javascript&quot;&gt;
parent.location.replace(&quot;Mostrarimagen.asp?ac =mostrar&amp;amp;Cod=&lt;%=codigo%&gt;&quot;);
&lt;/script&gt;
&lt;%
end sub


Sub Mostrar_Imagen(codigo_Imagen)
aca el codigo anterior...
que te mande..
sql=&quot;.selec...&quot;
if rs...
...no hay imagen
then
...imagen
end if
end sub

accion=CStr(Request.QueryString(&quot;ac&quot;))
codigo=CInt(Request.QueryString(&quot;Cod&quot;))

Select Case accion
case &quot;mostrar&quot;
call mostrar_Imagen(codigo)

Case else
call redir(codigo)

End Select

el replace permite recargar la pagina...asi la imagen se refresca

bueno espero que te sirva...
mi crreo es [email protected]
chausito..
  #16 (permalink)  
Antiguo 20/08/2002, 01:02
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Ok, Yoston, te he enviado un archivo .zip a tu correo, por favor revisalo y me avisas.

Me sigue presentando el mismo problema, no quiere mostrar la imágen.

Gracias...



Jean Joel
  #17 (permalink)  
Antiguo 20/08/2002, 02:15
 
Fecha de Ingreso: mayo-2002
Mensajes: 83
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Hola te envie un ejemplo zipeado(paginas y bd)...espero que ahora si puedas hacerlo

chausitooo :cantar:
  #18 (permalink)  
Antiguo 21/08/2002, 01:56
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Que mas Yoston, gracias por el ejemplo que me enviaste, funciona a la perfección, pero me queda una duda:

Las imágenes que almaceno en la base de datos, ¿se le adiciona un encabezado o algo así?

Lo digo porque no envías los bytes completos, sino que omites los 78 primeros, ¿Por que lo haces?

Bueno, disculpame la molestia, pero la verdad es que tengo curiosidad, y es para ver si resuelvo una duda, la cual está posteada en el mensaje &quot;Por que no muestra la imágen???&quot; de este mismo foro; por si te pasas por ahi, la dirección es:

<a href='ir.asp?http://www.forosdelweb.com/mensaje.asp?id=96918' target='_blank'>http://www.forosdelweb.com/mensaje.asp?i...</a>

Bueno, no te molesto mas y de verdad te agradesco toda la ayuda que me has brindado.



Jean Joel
  #19 (permalink)  
Antiguo 21/08/2002, 02:56
 
Fecha de Ingreso: mayo-2002
Mensajes: 83
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

hola--
mira asi yo guardo las imagenes en una BD
Código:
 
 rs.AddNew
 ff = FreeFile
 file = &quot;c:\inetpub\wwwroot\tesis\cap.jpg&quot;
 Open file For Binary Access Read As ff
 n = LOF(ff)
 If n Then
  ReDim b(1 To n) As Byte
  Get ff, , b()
 End If
 Close ff
 rs.Fields(&quot;Foto&quot;).Value = b()
 rs.Update
lo hago con visual basic...
no me meto con los header de las imagenes
pues para mi uso en particular no me interesaban...

bueno...
ahora si...espero que
lo logres

chausito dijo monchito... :cantar:
  #20 (permalink)  
Antiguo 22/08/2002, 00:09
 
Fecha de Ingreso: mayo-2002
Mensajes: 50
Antigüedad: 23 años
Puntos: 0
Re: Una pregunta poco usual ...

Ok, Yoston, te cuento que el problema es que la foto no se muestra, cuando es de formato jpg y tiene compresión; cuando es de formato gif o de formato jpg sin compresión (alta calidad), no se presenta ningún problema.

Por lo anterior he decidido restringir el upload de fotos solo a formatos gif y jpg sin compresión.

En este caso lo dejaré así, pero si alguien conoce como mostrar fotos jpg con perdida de calidad (jpg comprimidas y/o alisadas) que se encuentren almacenadas en una base de datos, bienbenida la ayuda.

Yoston, de verdad muchas gracias por tu paciencia.



Jean Joel
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 08:16.