Me han preguntado como cargar imágenes a una tabla con un campo de tipo BLOB, utilizando una aplicación Oracle Apex.
En realidad el procedimiento en Apex 4.2 es muy sencillo de realizar, pero antes, para ilustrar el procedimiento, voy a utilizar una tabla de ejemplo que solo tiene cuatro columnas, un ID para el registro, el nombre de la imagen, el tipo de archivo MIME de la misma y por supuesto la columna BLOB para contener la imagen.
El script de creación de la tabla es el que se muestra a continuación:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
CREATE TABLE MIS_IMAGENES ( IMG_ID NUMBER NOT NULL , IMG_NAME VARCHAR2 (100 BYTE) , IMG_MIMETYPE VARCHAR2 (32 BYTE) , IMG_IMAGE BLOB ) ; COMMENT ON COLUMN MIS_IMAGENES.IMG_ID IS 'Identificador único de la imagen' ; COMMENT ON COLUMN MIS_IMAGENES.IMG_NAME IS 'Nombre de la imagen' ; COMMENT ON COLUMN MIS_IMAGENES.IMG_MIMETYPE IS 'Tipo MIME del archivo' ; COMMENT ON COLUMN MIS_IMAGENES.IMG_IMAGE IS 'Imagen' ; CREATE INDEX MIS_IMAGENES_PK_IDX ON MIS_IMAGENES ( IMG_ID ASC ) ; ALTER TABLE MIS_IMAGENES ADD CONSTRAINT MIS_IMAGENES_PK PRIMARY KEY ( IMG_ID ) ; CREATE SEQUENCE MIS_IMAGENES_SEQ START WITH 1 MINVALUE 1 MAXVALUE 999999999999999 NOCACHE ORDER ; CREATE OR REPLACE TRIGGER MIS_IMAGENES_TBIR BEFORE INSERT ON MIS_IMAGENES FOR EACH ROW WHEN (NEW.IMG_ID IS NULL) BEGIN :NEW.IMG_ID := MIS_IMAGENES_SEQ.NEXTVAL; END; |
Una vez creada la tabla, vamos a crear en una aplicación Apex, una página de tipo Pantalla, basada en una tabla o vista, para la tabla que acabamos de crear.
En el ejemplo específico, solo utilizo en la página el campo de la columna BLOB.
Una vez creada la página vamos a editar los atributos del campo de la columna BLOB, en la sección de configuración, vamos a agregar valor a las columnas “Columna de Tipo MIME” y “Columna de Nombre de Archivo”, vamos a agregar en ellas el nombre de la columna que contiene el tipo MIME y la que contiene el nombre de la imagen en la tabla que estamos utilizando. De esta manera cuando carguemos nuestra imagen, estos valores serán pasados por Apex sin necesidad de ninguna otra acción.
Eso es todo, ahora podemos cargar imágenes, o cualquier otro tipo de archivo binario en nuestra tabla.