FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Imagens vía xml
Wop!
Estoy desarrollando una aplicación basada en web en la que necesito mostrar imagenes guardadas en la base de datos. Toda la aplicación funciona mediante xml... y no me gustaría cambiar eso. Sin usar xml podría montar algun sistema chapucero para hacer referencia a la imagen en el atributo src del tag image... pero el problema es que necesito que el usuario pueda modificar la imagen y guardarla en la BD. Lo que he descubierto hasta ahora es que la manera de mover binarios dentro de un xml es mediante el formato Base64. Se especifica en el DomElement.dataType el valor "Bin.Base64" y listos. El problema es... ¿cómo paso de ese formato a uno "normal" como jpg o png? Necesitaré hacerlo en Delphi, para montar el archivo xml en la lectura y para guardarlo, ya que no me parece apropiado guardarlo en Base64. Pero también tendré que realizar ambas conversiones en javascript, para mostrar la imagen al usuario, y, cuando me pasen la nueva, para enviarla al sevidor. ¿Alguien sabe como convertir ese formato? He estado buscando por ahí y no he encontrado nada... excepto algun ocx de VB que preferiría evitar y alguna cosilla para java. ¿Se os ocurre una manera mejor de conseguir lo que intento? ¿Me he explicado fatal y os habéis perdido en la segunda coma?
__________________
E pur si muove |
#2
|
|||
|
|||
Los componentes que guardan graficos en delphi, tienen el metodo LoadFromStream.
Basta que los datos extraidos de la base de datos, los metas un un TMemoryStream, y despues cargar esos datos en un componente de imagen usando el metodo LoadFromStream. Saludos Miguel |
#3
|
||||
|
||||
Cita:
__________________
E pur si muove |
#4
|
||||
|
||||
Lo del lado del servidor parece que lo tengo resuleto con los componentes TIdBase64Encoder - TIdBase64Decoder de las Indy.... pero para la parte javascript, espero sugerencias
__________________
E pur si muove |
#5
|
|||
|
|||
Si es una aplicacion web, seria interesante saber en que lenguaje esta
hecho el servidor. Si usas intraweb o algo parecido la respuesta que te he dado sigue siendo valida. La imagen no es necesario procesarla del lado del cliente, basta que la procese el servidor y la envie en el formato adecuado al cliente. Saludos Miguel |
#6
|
||||
|
||||
Wop!
Desconozco cómo funciona Intraweb, aunque me sorprende lo que comentas. El servidor está hecho con WebBroker, aunque, en cualquier caso, el lenguaje sigue siendo Delphi
__________________
E pur si muove |
#7
|
|||
|
|||
Intraweb tiene directamente un componente TIWImage al que se le asigna una imagen y listo. En el caso de webbroker no lo conozco pero supongo que podrias usar el mismo sistema que utiliza internamente el componente TIWImage de intraweb. En este caso intraweb crea un directorio denominado cache, en él, cuando es necesario, guarda un archivo temporal con la imagen que se quiera mostrar, y en el codigo que genera hace una referencia a esta imagen.
Intraweb tiene un proceso que elimina estas imagenes temporales del directorio cache cada cierto tiempo. El directorio cache no debe tener permisos para el listado de archivos, evitando que los usuarios puedan ver que archivos se encuentran en el. A cada imagen se le debe dar un nombre aleatorio y de bastantes caracteres, esto es para evitar que alguien pueda acceder a la imagen adivinando su nombre y poniendo en su navegador: http://www.loquesea.com/cache/nombreimage.jpg Saludos Miguel |
|
|
|