como almacenar imagenes

07/07/2004 - 14:06 por Jaime Pérez | Informe spam
Hola a todos:

Hasta ahora, cuando tengo que habilitar a un cliente la subida de una imagen
para, por ejemplo, una noticia de su web, lo que suelo hacer hasta ahora es
coger el nombre de la imagen, guardarlo en la base de datos en un campo de
texto asociado a la noticia y grabo la imagen en una carpeta determinada del
servidor. Cuando tengo que mostrar la noticia, meto la imagen en la forma
<img src="../images/subidas/<%=rs("imagen")%>">

Ultimamente me está surgiendo la duda de si sería mejor que, en lugar de
guardar el nombre de la imagen, guarde el archivo en si mismo en un campo
binary y luego leerla con binaryread.

¿Que opinais/recomendais?¿Es más eficiente de una forma o de otra?

De recomendarme la segunda opción: ¿algún enlace para informarme más sobre
como hacerlo o con algún ejemplo?

Muchas gracias

Preguntas similare

Leer las respuestas

#1 Alvaro G Vicario
07/07/2004 - 15:08 | Informe spam
*** Jaime Pérez wrote/escribió (Wed, 7 Jul 2004 14:06:47 +0200):
Ultimamente me está surgiendo la duda de si sería mejor que, en lugar de
guardar el nombre de la imagen, guarde el archivo en si mismo en un campo
binary y luego leerla con binaryread.

¿Que opinais/recomendais?¿Es más eficiente de una forma o de otra?



En todos los casos que conozco el cuello de botella de una aplicación web
es el acceso a la base de datos. En este caso, además, estarías cambiando
el proceso de esta forma:

Antes:
Leer un archivo del disco (la imagen)
Enviar el archivo al cliente

Ahora:
Leer un archivo del disco (el script)
Ejecutar el script
Obtener datos de la BD
Enviar salida al cliente

Por rapidísimo que sea el acceso a la base de datos, como no tenga tiempo
negativo no va a mejorar la eficiencia ;-)

Además, si usas un script para extraer las imágenes lo más probable es que
las imágenes sean tratadas como páginas dinámicas (que es lo que son) por
los navegadores y tengan que ser extraídas de la BD cada vez que se usen,
en lugar de tirar de caché. Se puede jugar con los encabezados pero ya es
un lío más.


Respuesta Responder a este mensaje
#2 Franco Figún
07/07/2004 - 15:11 | Informe spam
Hola
Para almacenar, solo necesitas primero que nada, tener una bd access o sql,
en donde uno de los campos sea OLE para access o Binary para SQL, y debes
subir dichas imagenes con algun componente como aspupload o sa file-up, y
luego, para ver esas imagenes, usas un ejemplo como este:

<%
Response.Expires = 0
Response.Buffer = true
Response.Clear
set conn=server.CreateObject("ADODB.Connection")
set rstconn=server.CreateObject("ADODB.RecordSet")
conn.Open "DBQ="&server.MapPath("bd.MDB")&";Driver={Microsoft Access Driver
(*.mdb)}"

dim rst
dim formato
dim tamano
set rst = server.CreateObject("ADODB.RecordSet")

sql="select * from tabla"
rst.Open sql, conn,2,3
if rst.EOF then
Response.End
end if

Response.ContentType = "image/pjpeg"
Response.BinaryWrite rst.Fields("imagen")

rst.Close
set rst = nothing
conn.close
set conn = nothing
%>


FF
www.francofigun.com.ar
www.microsofties.com.ar
MSN:
UIN: 314408886
Yahoo MSN:
"Jaime Pérez" wrote in message
news:
Hola a todos:

Hasta ahora, cuando tengo que habilitar a un cliente la subida de una


imagen
para, por ejemplo, una noticia de su web, lo que suelo hacer hasta ahora


es
coger el nombre de la imagen, guardarlo en la base de datos en un campo de
texto asociado a la noticia y grabo la imagen en una carpeta determinada


del
servidor. Cuando tengo que mostrar la noticia, meto la imagen en la forma
<img src="../images/subidas/<%=rs("imagen")%>">

Ultimamente me está surgiendo la duda de si sería mejor que, en lugar de
guardar el nombre de la imagen, guarde el archivo en si mismo en un campo
binary y luego leerla con binaryread.

¿Que opinais/recomendais?¿Es más eficiente de una forma o de otra?

De recomendarme la segunda opción: ¿algún enlace para informarme más sobre
como hacerlo o con algún ejemplo?

Muchas gracias



Respuesta Responder a este mensaje
#3 Jaime Pérez
07/07/2004 - 15:24 | Informe spam
Entendido, sigo como estoy...

Gracias.

Jaime
"Alvaro G Vicario" escribió en
el mensaje news:1o7wo6g3jm1rh$
*** Jaime Pérez wrote/escribió (Wed, 7 Jul 2004 14:06:47 +0200):
> Ultimamente me está surgiendo la duda de si sería mejor que, en lugar de
> guardar el nombre de la imagen, guarde el archivo en si mismo en un


campo
> binary y luego leerla con binaryread.
>
> ¿Que opinais/recomendais?¿Es más eficiente de una forma o de otra?

En todos los casos que conozco el cuello de botella de una aplicación web
es el acceso a la base de datos. En este caso, además, estarías cambiando
el proceso de esta forma:

Antes:
Leer un archivo del disco (la imagen)
Enviar el archivo al cliente

Ahora:
Leer un archivo del disco (el script)
Ejecutar el script
Obtener datos de la BD
Enviar salida al cliente

Por rapidísimo que sea el acceso a la base de datos, como no tenga tiempo
negativo no va a mejorar la eficiencia ;-)

Además, si usas un script para extraer las imágenes lo más probable es que
las imágenes sean tratadas como páginas dinámicas (que es lo que son) por
los navegadores y tengan que ser extraídas de la BD cada vez que se usen,
en lugar de tirar de caché. Se puede jugar con los encabezados pero ya es
un lío más.


Respuesta Responder a este mensaje
#4 Jaime Pérez
07/07/2004 - 15:24 | Informe spam
Muchas gracias por la ayuda. Me lo guardo por si alguna vez lo uso...

Un saludo,

Jaime
"Franco Figún" escribió en el mensaje
news:
Hola
Para almacenar, solo necesitas primero que nada, tener una bd access o


sql,
en donde uno de los campos sea OLE para access o Binary para SQL, y debes
subir dichas imagenes con algun componente como aspupload o sa file-up, y
luego, para ver esas imagenes, usas un ejemplo como este:

<%
Response.Expires = 0
Response.Buffer = true
Response.Clear
set conn=server.CreateObject("ADODB.Connection")
set rstconn=server.CreateObject("ADODB.RecordSet")
conn.Open "DBQ="&server.MapPath("bd.MDB")&";Driver={Microsoft Access


Driver
(*.mdb)}"

dim rst
dim formato
dim tamano
set rst = server.CreateObject("ADODB.RecordSet")

sql="select * from tabla"
rst.Open sql, conn,2,3
if rst.EOF then
Response.End
end if

Response.ContentType = "image/pjpeg"
Response.BinaryWrite rst.Fields("imagen")

rst.Close
set rst = nothing
conn.close
set conn = nothing
%>


FF
www.francofigun.com.ar
www.microsofties.com.ar
MSN:
UIN: 314408886
Yahoo MSN:
"Jaime Pérez" wrote in message
news:
> Hola a todos:
>
> Hasta ahora, cuando tengo que habilitar a un cliente la subida de una
imagen
> para, por ejemplo, una noticia de su web, lo que suelo hacer hasta ahora
es
> coger el nombre de la imagen, guardarlo en la base de datos en un campo


de
> texto asociado a la noticia y grabo la imagen en una carpeta determinada
del
> servidor. Cuando tengo que mostrar la noticia, meto la imagen en la


forma
> <img src="../images/subidas/<%=rs("imagen")%>">
>
> Ultimamente me está surgiendo la duda de si sería mejor que, en lugar de
> guardar el nombre de la imagen, guarde el archivo en si mismo en un


campo
> binary y luego leerla con binaryread.
>
> ¿Que opinais/recomendais?¿Es más eficiente de una forma o de otra?
>
> De recomendarme la segunda opción: ¿algún enlace para informarme más


sobre
> como hacerlo o con algún ejemplo?
>
> Muchas gracias
>
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida