PDA

Ver la Versión Completa : guardar y mastrar imagenes en una base de datos


cahosoft
23-06-2006, 00:56:49
hola todos como estan...
necesito guardar una imagen en una base de datos desde una aplicacion web echa en java.... y depues de eso mostrala el pagina....

como haga para guardar la imagen en la db...

de ante mano gracias...

epuigdef
23-06-2006, 07:12:01
Buenas!

Esto va a depender mucho de la base de datos que utilices.

Yo, en mi caso, estoy utilizando una base de datos DB2 de IBM sobre un AS-400. Lo que hago es no guardar la imagen en base de datos, sino en un fichero que coloco en un directorio del servidor que sea accesible desde fuera.

Entonces en la base de datos sólo necesito el nombre del archivo, y con un <IMG> lo enlazo con el archivo

Edu

OSKR
24-06-2006, 20:48:12
epuigdef tiene 99% razón...no guardes objetos q pudieran ser grandes en las tablas si puedes dejarlos afuera, solo haz una referencia a su nombre y ubicación...preferiblemente estandarizada....por ejemplo: Q00001.jpg
De todos modos si necesitas meterla alli o meterla allí y sino pues meterla allí mira este fragmento de lo q actualmente desarrollo:

if( Error==null)
{ Vector Data;
byte [] Clave,Head,Mssg;
/*Cifrado*/
Data=Cifrado.Cifraos((Encabezado.length() < 256 ? Encabezado : Encabezado.substring(0,256)));
Clave=(byte[])Data.remove(0); //Obtenemos el valor con el q se cifró: 16 bytes.
Head= (byte[])Data.remove(0); //Obtenemos el encabezado cifrado: 256 bytes.
Mssg= Cifrado.Cifraos(Clave,(Contenido.length() < 1024 ? Contenido : Contenido.substring(0,1024)));
/*Ensamblado*/
ByteArrayOutputStream _BAOS= new ByteArrayOutputStream();
DataOutputStream _DOS=new DataOutputStream(_BAOS);
_DOS.write(Clave);
_DOS.writeInt(Head.length);
_DOS.writeInt(Mssg.length);
_DOS.write(Head);
_DOS.write(Mssg);
Calendar Cal= Calendar.getInstance();
String fecha =(Cal.get(Cal.MONTH)+1)+"/"+Cal.get(Cal.DATE)+"/"+Cal.get(Cal.YEAR)+" "+Cal.get(Cal.HOUR_OF_DAY)+":"+Cal.get(Cal.MINUTE)+":"+Cal.get(Cal.SECOND);
/*Sentencia*/
PreparedStatement PS=CC.PS("Insert Into Buzon values("+ID+","+IdA+","+IdB+",'"+fecha+"','0',?)");
PS.setBytes(1,_BAOS.toByteArray());
CC.Actualizar(PS);

Mira bien ese ? ahí se pondrá el contenido en bruto (bytes) de lo q qieres ya q si este contiene ' o " podría cerrar la sentencia, en mi caso lo hago para meter un mensaje cifrado al buzón de mensajes con AES128 proveniente del cliente, lo empaqeto y después de preparar la sentencia lo inserto con setBytes donde 1 es el primer ? q se encuentre en la cadena, en tu caso solo lleva la imagen a un vector de bytes y lo insetas así