Insertar imagenes en la base de datos
Cordial Saludo. por favor me podrian ayudar, Necesito insertar en mi base de datos imagenes cuya extension son .jpg, tengo que tener un boton que llame a las fotografias y posteriormente queden gravadas en mi base de datos. Muchas Gracias
Hola,
Me puedes decir que version de oracle tienes?
y que tipo de herramientas de desarrollo usas?
bye.
Me puedes decir que version de oracle tienes?
y que tipo de herramientas de desarrollo usas?
bye.
Hay que usar el paquete dbms_lob, los bfile y los directory.
Se crea un objeto DIRECTORY indicando donde está el fichero a cargar:
CREATE OR REPLACE DIRECTORY \\'DIRECTORIO\\' as \\'/private1/LOB/files\\';
Donde \\'DIRECTORIO\\' es un identificador que nosotros le damos y \\'/private1/LOB/files\\' es el path donde vamos a poner los ficheros a cargar.
Se lanza algo como lo siguiente:
declare
lobd BLOB;
fils BFILE;
amt number;
BEGIN
fils:=BFILENAME(\\'DIRECTORIO\\', \\'fichero.jpg\\');
DBMS_LOB.FILEOPEN(fils, dbms_lob.file_readonly);
amt:=dbms_lob.GETLENGTH( fils );
dbms_lob.CREATETEMPORARY(lobd,false);
DBMS_LOB.LOADFROMFILE(lobd, fils, amt);
update \"nombretabla\" set \"columnablob\"=lobd where \"condicion\";
COMMIT;
DBMS_LOB.FILECLOSE(fils);
END;
Donde fichero.jpg es el nombre del fichero a cargar, \"nombretabla\" la tabla donde lo cargamos, \"columnablob\" la columna tipo blob y \"condicion\" las condiciones que queramos poner en el where. Por supuesto en lugar de un update podría ser un insert.
Se crea un objeto DIRECTORY indicando donde está el fichero a cargar:
CREATE OR REPLACE DIRECTORY \\'DIRECTORIO\\' as \\'/private1/LOB/files\\';
Donde \\'DIRECTORIO\\' es un identificador que nosotros le damos y \\'/private1/LOB/files\\' es el path donde vamos a poner los ficheros a cargar.
Se lanza algo como lo siguiente:
declare
lobd BLOB;
fils BFILE;
amt number;
BEGIN
fils:=BFILENAME(\\'DIRECTORIO\\', \\'fichero.jpg\\');
DBMS_LOB.FILEOPEN(fils, dbms_lob.file_readonly);
amt:=dbms_lob.GETLENGTH( fils );
dbms_lob.CREATETEMPORARY(lobd,false);
DBMS_LOB.LOADFROMFILE(lobd, fils, amt);
update \"nombretabla\" set \"columnablob\"=lobd where \"condicion\";
COMMIT;
DBMS_LOB.FILECLOSE(fils);
END;
Donde fichero.jpg es el nombre del fichero a cargar, \"nombretabla\" la tabla donde lo cargamos, \"columnablob\" la columna tipo blob y \"condicion\" las condiciones que queramos poner en el where. Por supuesto en lugar de un update podría ser un insert.
Buenas he estado mirándo el código y tengo una preguntilla.
Yo utilizo la oracle9i, estoy tratando de hacer un formulario de mantenimiento en forms multiregistro y uno de sus campos es un BLOB (imagen).
Necesitaría saber si este código me vale para hacer eso o no?? y cómo debo insertarlo ¿?
muchas gracias y... lo siento estoy muy verde ;-)
Yo utilizo la oracle9i, estoy tratando de hacer un formulario de mantenimiento en forms multiregistro y uno de sus campos es un BLOB (imagen).
Necesitaría saber si este código me vale para hacer eso o no?? y cómo debo insertarlo ¿?
muchas gracias y... lo siento estoy muy verde ;-)
