![]() |
Guardar y recuperar imagen en bd
Hola compañeros, trato de guardar una imagen en mi bd pero lo que hago es guardarla como string, escribiendola en un flujo Stream, de alli para recuperarla leo el campo y lo escribo en un flujo stream y de allí cargo la imagen. El problema esk no me muestra ninguna imagen :confused:, alguien me pudiera orientar, o bien sugerir otra forma de hacerlo.
Saludos y gracias |
Disculpa mi ignorancia ,pero dices que la imagen lo guardas como string?:confused: ¿como es eso? Talves te estas refiriendo a solo guardar la ruta de la imagen?
Y aparte de eso ¿Que servidor de base de datos usas(MySQL,MS SQL Server,Oracle,Firebird,etc)?¿Y que tipo de dato es la columna de tu tabla que guarda la imagen (Char,Varchar,Blob,etc)?:confused:. Saludos...:) |
Uff, perdón, se me olvido comentar que el motor de bd que utilizo es MySql, y el campo es varchar.
Ese código lo saqué de un post de la web del programador, que supuestamente guarda la imagen como texto, :rolleyes: pero ya vi q nomás no funciona jeje. Saludos |
pk no usas un kampo de tipo Graphic *son para esto* y te ahorras todo eso de konvertir en string una imagen k parece k no funciona????
|
Hola en casos como ese lo que yo hago es solo guardar la ruta en la base de datos y la imagen la guardo en una carpeta en el disco duro asi solo leo la ruta en la base de datos y la imagen la tomo de la carpeta del disco duro, tal vez no sea la mejor forma pero me ha funcionado yo desarrollo aplicaciones web en php y esa es la manera en la que guardo imágenes.
saludos.. |
Cita:
Por otro lado tambien si se guarda muchas imagenes directamente en las tablas del servidor, puede provocar lentitud o sobrecarga en la red. Asi que en todo caso hay que ver la forma mas adecuada posible de implementarlo y eso depende de la aplicacion, y de quien lo esta implementado.;) Saludos...:) |
Cita:
Cita:
Cita:
// Saludos |
Lizette,
No sé si pueda guardarse una imagen en un campo de tipo VarChar, en todo caso, no me parece el más indicado. Sería mejor que optaras por un campo BLOB (LongBlob, MediumBlob, TinyBlob, etc., dependiendo del tamaño de tus imágenes). Te pongo aquí unas rutinas para guardar y mostrar imágens en una base MySQL usando un ADOTable:
Las rutinas equivalentes usando un AdoQuery
Veo más conveniente usar un AdoQuery, sobre todo para obtener la imagen desde la base de datos; porque usar un AdoTable implicaría, como dice rgstuamigo, demasiado tráfico. Lo normal sería, mostrar una lista de registros y que el usuario escoja de cual quiere ver la imagen, y sólo entonces descargas la foto. // Saludos |
Cita:
Cita:
¿Y como le enviarias las imagenes a dicho directorio? Saludos...:) |
¿Guardar las imagenes en cada ordenador? Pues entonces se pierde el concepto de una base de datos ¿no?
En cuanto a lo segundo, creo que estás confundiendo. Es decir, en la parte del comentario que citas, yo me estoy refiriendo a cuando se guardan las fotos en un campo BLOB, no en archivos separados. Si uno enlaza un AdoTable a una tabla con imágenes, seguramente habrá mucho tráfico pues se estarían descargando fotos que no necesariamente se desea ver. Por eso le comento a Lizette que sería mejor una consulta SQL. Ahora, en cuanto a guardar las imágenes en archivos separados, no creo que con consultas SQL puedan subirse o bajarse las fotos. Pero se tendría la ruta del servidor en donde se almacenan y ya sería cuestión de usar FTP o HTTP (con Indy, por ejemplo) para moverlas de un sitio a otro. // Saludos |
Cita:
Cita:
Te pregunto: ¿entonces que ventaja tengo o obtengo de guardar la imagenes en un directorio del servidor?:rolleyes: Para eso mas bien guardarlas en la base de dato, que me permite verlas desde cualquier lugar y sin usar FTP o HTTP.¿O hay algo que no estoy tomando en cuenta?:rolleyes::confused: Saludos...:) |
Cita:
Cita:
Ahora, en cuanto a si se complican las cosas, pues sí se complican. Pero yo no fui quien propuso guardar las fotos en archivos separados ;) Los campos BLOB de una base están para algo. Por otra parte, en caso de que fuese necesario lo de los archivos aparte, tampoco es que sea una tarea gigantezca el transportarlas via FTP o HTTP. Pero, además, si te fijas, calogero -quien fue el que mencionó lo de guardar las imágenes en archivos- trabaja con php en web, lo cual ofrece otro panorama, pues es el mismo php corriendo en el servidor quien se encargaría de leer las fotos y mandarlas al navegador sin necesidad del extra de algo como las Indy. // Saludos |
Cita:
Cita:
Cita:
¿acaso no seria mejor ,en ese caso, guardarlo directamente en la base de dato?:confused: Saludos...:) |
Cita:
Cita:
Cita:
// Saludos |
Aclarado
Todo Aclarado amigo.:):cool::)
Saludos...:) |
Guardar IMG
hola a todos bueno aclaro que yo nunca he usado el MySQL para hacer esto pero supongo que usando los tipos de campo que aclara roman debe ser lo mismo....
yo para guardar imagenes en una base de datos uso lo TMemoryStream. algo como esto... con eso resuelvo... y hasta ahora guardo imagenes de todos tipos sin ningun tipo de problemas usando SQL Server.. Access..... bueno..... chaoooo |
Me aparece un error
Reciban un cordial saludo.
estoy en en mismo problema resulta que yo utilizo zeos y Mysql con delphi 2007 las fotos que debo almacenar en mysql estan en jpeg hago el mismo procedimiento que indica roman cambiando unicamente el tbitmap por un Tjpegimage y me aparece el error jpeg error #53 me almacena mal los datos como lo soluciono. |
Encontre mi solucion
Resulta que tengo un disparador en el evento ondatachange en el data source para que me almacene los datos correctamente debo desabilitar ese datasource mientras se almacenan los datos y luego lo activo queda perfecto.
|
La franja horaria es GMT +2. Ahora son las 12:43:34. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi